为了账号安全,请及时绑定邮箱和手机立即绑定

重命名后Golang相关包导入

重命名后Golang相关包导入

Go
哔哔one 2021-12-20 10:22:17
我的 $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,那么包导入的最佳做法是什么?那么我是否需要手动更新导入包的名称?
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

规则#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"

)  

如果出于某种原因您想对软件包进行版本控制,您可以:

  • 提供新的存储库(导入 URL)

  • 使用类似 gopkg.in ( http://labix.org/gopkg.in )的服务来提供版本化的导入 URL (例如 gopkg.in/you/pkgname.v2)


查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信