关于包名的疑惑

比如一个go项目,内部有自定的aaa包和bbb包,那么在main.go中包中这样引用: package main import ( "aaa" "bbb" ) func main(){ 。。。 } 编译通过,没问题了。哪天想开源了,放到github上,就要全部修改源代码里面的引用,改成“github.com/xxx/aaa”,"github.com/xxx/bbb" 过了几天微软把github买了,感觉不爽了,把源码搬到gitlab,又要把全部源码的引用改成“gitlab.com/xxx/aaa” 是这样的吗?只是搬个地方,就要这样折腾一次源码吗?感觉源码和放的位置绑得太死了,不太方便。有没有内部包这种说法,放哪里都可以。
已邀请:

chenqinghe

赞同来自: EyesChan

可以考虑使用Go1.11新出的**module**,在初始化的时候指定module名,然后包路径就是*module/pkg1/subpkg*这样的,不管移到哪里都无所谓了。

nove001 - code man

可以将包放入 `vender` 或者 `internal` 下,或者楼上 @chenqinghe 说的,最新的 feature `module`。
建议研究下 Go 的依赖包管理,虽然 `module` 之前,依赖管理还是比较简陋,但是你这个问题,是可以优雅的解决的。

gbd

学习了,多谢两位的解答。

要回复问题请先登录注册