golang 引用相对路径package
  • 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