重命名后导入Golang相对包
我的$GOPATH是重命名后导入Golang相对包,go,package,Go,Package,我的$GOPATH是 "/Users/peter/goworkspace" 我当前的golang版本: go version go1.6 darwin/amd64 我在这个工作区下有多个golang项目,下面是目录的结构 +/goworkspace +---/bin +---/pkg +---/src +---/project1 +---package1 +---file1.go +---fi
"/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,那么包导入的最佳实践是什么?
那么我需要手动更新导入的包的名称吗?规则1:不要使用相对导入。这是(部分)您遇到问题的原因。请通读以下内容: 使用完全限定的导入路径(如图所示):
导入(
“项目1/包1”
“项目1/包2”
“项目1/包3”
//或者理想情况下,其他人可以在将来访问它:
“github.com//project1/package4”
)
如果出于某种原因,您希望对软件包进行版本设置,您可以:
- 提供新存储库(导入URL)
- 使用像gopkg.in()这样的服务来提供版本化的导入URL(例如gopkg.in/you/pkgname.v2)
import(
"project1/package1"
"project1/package2"
"project1/package3"
// Or ideally, so others can access it in the future:
"github.com/<yourusername>/project1/package4"
)