我仍然试图绕过Go工作区布局。我有一个包todinfo
和一个使用它的示例程序untod
。
我目前有这样的目录安排:
$GOPATH
+- bin...
+- pkg ...
+- src
+- github.com
+- longborough
+- (others)...
+- todinfo
+- todinfo.go
+- untod.go
我最初在不同的目录中开发了这两个程序。但是,由于untod
实际上是todinfo包的一部分,因此将它作为单个项目打包在同一目录中似乎更为明智。
但是当我尝试安装时(为了清楚起见,我将回复包装在三行上):
D:\Development\Go\src\github.com\longborough\todinfo>go install
can''t load package: package github.com/longborough/todinfo:
found packages todinfo (todinfo.go) and main (untod.go)
in D:\Development\Go\src\github.com\longborough\todinfo
我希望我错了,但这有点像Java,至少对于那些没有经验的人来说。
我做错了什么?我应该使用什么Go命令来安装包然后安装样本?或者,正确的目录安排是什么?
答案 0 :(得分:1)
这也让我受益匪浅。可以这样考虑:untod
不是todinfo
包的一部分,它是todinfo
包(库)的使用者。事实上,main
根本不是一个包,只是说它有一个入口点,应该编译成二进制文件。
TLDR:您可以将untod
放在任何地方。在根中可能是明智的:它将被命名为$GOPATH
的最后一个dir组件。或者,如果您有多个二进制文件,请将其放入cmd/untod/untod.go
。
经过一些更多的开发之后,你可以考虑单独制作一个像github.com/longborough/todinfo-bins
这样的回购来让它们分开。