Как импортировать пакет поставщика импортированного пакета - PullRequest
0 голосов
/ 02 января 2019

Я использую пакет wal etcd (https://godoc.org/github.com/coreos/etcd/wal) для ведения записи с опережением записи. У wal в пакетах поставщика go.uber.org/zap. В функции создания wal func Create(lg *zap.Logger, dirpath string, metadata []byte) (*WAL, error) мне нужно передать zap.Logger.

Я пытался импортировать go.uber.org/zap, но компилятор жалуется на "несоответствие типов", когда я передаю zap.Logger.

package main 

import (
"github.com/coreos/etcd/wal"
)

func check(e error) {
    if e != nil {
        panic(e)
    }
}

func main() {

    metadata := []byte{}
    w, err := wal.Create(zap.NewExample(), "/tmp/hello", metadata)

    // err := w.Save(s, ents)


}

Как мне использовать zap.Logger в моем проекте?

1 Ответ

0 голосов
/ 02 января 2019

Похоже, пакет github.com/coreos/etcd/wal не предназначен для использования вне проекта etcd. Если вам действительно нужно его использовать, выполните следующие действия.

  1. Поместите следующий код в файл $GOPATH/src/yourpackage/main.go.

    package main
    
    import (
        "fmt"
    
        "go.etcd.io/etcd/wal"
        "go.uber.org/zap"
    )
    
    func main() {
        metadata := []byte{}
        w, err := wal.Create(zap.NewExample(), "/tmp/hello", metadata)
        fmt.Println(w, err)
    }
    
  2. mkdir $GOPATH/src/yourpackage/vendor

  3. cp -r $GOPATH/src/go.etcd.io $GOPATH/src/yourpackage/vendor/
  4. mv $GOPATH/src/yourpackage/vendor/go.etcd.io/etcd/vendor/go.uber.org $GOPATH/src/yourpackage/vendor/
  5. go build yourpackage
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...