76

在我的 GOPATH 中,我有这样的东西:

/bin/
/pkg/
/src/
/src/my_prog/
/src/my_prog/main.go
/src/my_prog/d_interface.go
/src/my_prog/d_struct_that_implements_the_interface.go

main.go我有package main,在我d_interface.go有。d_struct_that_implements_the_interface.gopackage my_prog

当我尝试时,go build my_prog我收到以下错误:

can't load package: package my_prog: found packages my_prog (d_interface.go) and main (main.go) in C:\dev\Code\Go\src\my_prog

这是否意味着任何属于的文件都package main应该放在自己的文件夹中?如果是这样,这是什么原因?

4

3 回答 3

79

是的,每个包都必须在自己的目录中定义。

源结构在如何编写 Go 代码中定义。

包是可以在多个程序中使用的组件,可以发布、导入、从 URL 获取等。因此,它拥有自己的目录,就像程序可以拥有目录一样。

于 2013-01-19T16:27:24.827 回答
20

此外,如果您要做的只是将 main.go 文件分解为多个文件,那么只需将其他文件命名为“package main”,只要您仅在其中一个文件中定义 main 函数,您就可以去。

于 2015-01-11T19:12:08.750 回答
2

确保您的包已安装在您的$GOPATH目录中或已经安装在您的工作区/包中。

例如:如果你的$GOPATH = "c:\go",确保里面的包C:\Go\src\pkgName

于 2013-11-19T19:08:16.833 回答