如何编译包含多个文件的Go程序?

新手上路,请多包涵

我有一个由三个文件组成的小程序,它们都属于同一个包(main)。但是当我做 go build main.go 构建没有成功。当它只有一个文件( main.go )时,一切正常。

现在我花了一些努力来分离代码,看起来编译器无法找到从 main.go 中取出并放入这两个其他文件(与主.去)。这导致 undefined 'type' 错误。

如何编译这个由多个文件组成的程序?

原文由 Vitaly 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
2 个回答

新方式( _推荐_):

请看看这个答案

旧方法:

假设您正在编写一个名为 myprog 的程序:

将所有文件放在这样的目录中

myproject/go/src/myprog/xxx.go

然后添加 myproject/go 到 GOPATH

并运行

go install myprog

这样,如果需要,您就可以在 myproject/go/src 中添加其他包和程序。

参考:http: //golang.org/doc/code.html

(这个文档总是被新手错过,而且一开始经常被误解。它应该得到 Go 团队 IMO 的最大关注)

原文由 Denys Séguret 发布,翻译遵循 CC BY-SA 4.0 许可协议

When you separate code from main.go into for example more.go , you simply pass that file to go build / go run / go install 还有。

所以如果你以前跑过

go build main.go

你现在只是

go build main.go more.go


作为进一步的信息:

 go build --help

状态:

如果参数是 .go 文件列表,build 会将它们视为指定单个包的源文件列表。


请注意 go buildgo install 不同于 go run 前两个状态期望 包名称 作为参数,而后者期望 go files 。但是,前两个也将像 go install 一样接受 go 文件。

如果你想知道:构建将只是 build 包/文件, install 将在你的 GOPATH 中生成对象和二进制文件,以及 run 程序。

原文由 Kissaki 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题