我正在關注的Protocol Buffer for Go tutorial但我有以下問題:協議緩衝區:找不到包
- 我創建的地址簿協議定義
syntax = "proto3"; package tutorial; message Person { string name = 1; ... }
- 我成功運行編譯器並生成代碼
- 我嘗試導入pb包但失敗
這裏是什麼情況:我指定--go_out
是同我的原定義:(protoc --go_out=. addressbook.proto
)
然後在同一個文件夾中,我創建這些簡單的線條test.go:
package main
import "tutorial"
但go build test.go
返回錯誤:
test.go:3:8: cannot find package "tutorial" in any of:
/usr/local/go/src/tutorial (from $GOROOT)
/home/vagrant/go2/src/tutorial (from $GOPATH)
然後我改變test.go
這樣:
package main
import "protobufs/tutorial"
,並得到這個錯誤:
test.go:3:8: cannot find package "protobufs/tutorial" in any of:
/usr/local/go/src/protobufs/tutorial (from $GOROOT)
/home/vagrant/go2/src/protobufs/tutorial (from $GOPATH)
,但如果我改變了進口只:
package main
import "protobufs"
發現,有一個 「教程」 包在該位置:
test.go:3:8: found packages tutorial (addressbook.pb.go) and main (list_people.go) in /home/vagrant/go2/src/protobufs
我在做什麼錯?進口應該如何才能完成這項工作?
謝謝!
FYI:我去ENV的一個片段:
GOARCH="amd64"
GOBIN="/home/vagrant/go2/bin"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/vagrant/go2"
GORACE=""
GOROOT="/usr/local/go"
爲了讓編譯好的protobuf可以導入爲「tutorial」,需要將'--go_out ='設置爲'$ GOPATH/src/tutorial'。 –
是的,這是有效的。謝謝 ! ...似乎我需要閱讀更多關於golang的導入,因爲我不明白爲什麼我不能從同一目錄導入它 – whyme