问题描述
老实说,Golang 的包和模块系统是我遇到过的最令人恼火和不必要的复杂事情。我不知道是我不明白,还是缺乏关于这个主题的信息,或者只是一般的 golang。
我创建了一个 Go 项目,我现在不想发布或上传到 GitHub。它不在我设置的 GOPATH 内,因为根据我对模块引入的理解,您可以在 GOPATH 之外对您的项目进行编码。 项目布局是这样的
──── MyProject
├─── project
│ ├─── pkg1
│ │ └─── foo.go
│ ├─── pkg2
│ │ └─── bar.go
│ └─── go.mod
└─── test
└─── test.go
在 test.go
中,我希望我可以做类似 import "project/pkg1"
的事情,但我不明白如何让它发挥作用。即使我在项目中移动 test.go
并输入 import "/pkg1"
,我也会收到 Cannot import absolute path
错误。
我真的不想一直在 %GOPATH%/src
中编写我所有的 Go 项目,不得不这样做似乎很荒谬。
同样,这可能只是我不理解。我来自 pythonic 背景,我可以创建一个 setup.py
文件,在运行后将我的项目安装到 python 的路径以备将来使用。任何有关此问题的帮助,无论是指向教程或网站的链接,我们都将不胜感激,谢谢。
解决方法
如果您是 go 新手,我建议您使用 go.mod 和平面项目结构。使用实际代码保留您的测试。任何以 _test.go
为后缀的内容都不会包含在内。
go.mod
foo.go
foo_test.go
bar.go
bar_test.go
如果这是一个库,请随意输入包名称。
如果这是一个可执行应用程序,请将 main
设置为根包名称。