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