我仍在设法绕过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命令来安装软件包,然后安装示例?或者,正确的目录安排是什么?

最佳答案

这也给我。这样想:untod不是todinfo包的一部分,它是todinfo包(库)的使用者。实际上,main根本不是一个包,只是一个标记,它表示它有一个入口点,应该编译为二进制文件。

TLDR:您可以将untod放在任何地方。在根目录中可能是明智的:然后将其命名为$GOPATH的最后一个dir组件。或者,如果您有多个二进制文件,请将其放在cmd/untod/untod.go中。

经过更多开发后,您可以考虑制作一个单独的存储库(如github.com/longborough/todinfo-bins)以使其分开。

Dave Cheney has some decent advice on the subject.

关于go - Golang-如何使用示例程序来安排我的工作区?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35135081/

10-09 13:23