错误“无法加载包:包my_prog:找到包my_prog和main”

时间:2013-01-19 16:21:11

标签: go

在我的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.gopackage maind_interface.god_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的任何文件都应该放在自己的文件夹中?如果是这样,原因是什么?

3 个答案:

答案 0 :(得分:54)

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

源结构在How to Write Go Code中定义。

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

答案 1 :(得分:11)

另外,如果您要做的就是将main.go文件分解为多个文件,只要将其他文件命名为“package main”,只要您只在其中一个文件中定义main函数即可很高兴。

答案 2 :(得分:0)

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

例如:如果您的$GOPATH = "c:\go",请确保C:\Go\src\pkgName

中的包