My $GOPATH is
"/Users/peter/goworkspace"
Golang 版本是:
go version go1.6 darwin/amd64
在这个workspace下我有多个不同golang项目,目录结构类似于
+/goworkspace
+---/bin
+---/pkg
+---/src
+---/project1
+---package1
+---file1.go
+---file2.go
+---file3.go
+---package2
+---package3
+---main.go
+---/project2
+---/project3
在proj1下的main.go中,我用相对路径的方式引用了proj1下的其它package
import(
"./package1"
"./package2"
"./package3"
)
但是当我 run go build的时候,go编译器一直提示报错:
" can't load package: local import "../package" in non-local package“
我尝试不用相对路径引入package的话
import(
"project1/package1"
"project1/package2"
"project1/package3"
)
就能编译成功。
所以,我第一个main.go中为什么会编译出错呢?
如果不引用相对路径导入包的话,那如果我以后重命名这个project的话,那是否导入的包爷得重新改写?
我把问题也post到 stackoverflow上了http://stackoverflow.com/questions/35688100/golang-relative-package-import-after-renaming
如果project1已经配置到gopath中,go build的时候会检测到,认为gopath中存在的包路径不应该通过相对路径的形式导入,所以报错。
如果把project1移出gopath,这个时候就不会报这个编译错误了。
golang只有在gopath中找不到的包路径,才允许用相对路径导入。