我的$ GOPATH是
"/Users/peter/goworkspace"
我目前的golang版本:
go version go1.6 darwin/amd64
我在这个工作区下有多个golang项目,所以这里是目录的结构
+/goworkspace
+---/bin
+---/pkg
+---/src
+---/project1
+---package1
+---file1.go
+---file2.go
+---file3.go
+---package2
+---package3
+---main.go
+---/project2
+---/project3
在我的proj1的main.go中,我将使用此项目下其他包的导入,它将如下所示:
import(
"./package1"
"./package2"
"./package3"
)
然而,当我运行“go build”时,我一直在收到错误说:
“
无法加载包:本地导入“../package”在非本地包中
如果我不想使用相对包路径,例如使用它:
import(
"project1/package1"
"project1/package2"
"project1/package3"
)
然后一切都会奏效。
如果我使用相对包路径,我的代码有什么问题?
如果project1的名称将来会改变,那么包导入的最佳实践是什么,例如它更改为projecet1v2?
我是否需要手动更新导入的包的名称?
答案 0 :(得分:4)
规则#1:不要使用相对进口。这(部分)是您遇到问题的原因。请仔细阅读:https://golang.org/doc/code.html#Library
使用完全限定的导入路径(如您所示):
import(
"project1/package1"
"project1/package2"
"project1/package3"
// Or ideally, so others can access it in the future:
"github.com/<yourusername>/project1/package4"
)
如果出于某种原因想要对软件包进行版本控制,可以: