- H5W3
- 2021-07-02 23:38:02
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的话,那是否导入的包爷得重新改写?
回答:
如果project1已经配置到gopath中,go build的时候会检测到,认为gopath中存在的包路径不应该通过相对路径的形式导入,所以报错。
如果把project1移出gopath,这个时候就不会报这个编译错误了。
golang只有在gopath中找不到的包路径,才允许用相对路径导入。
回答:
Go的package不支持相对路径,都是从$GOPATH/src下一层一层找的。
以上是 golang 引用相对路径package 的全部内容, 来源链接: www.h5w3.com/183917.html