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

所以我有一个由三个文件组成的小程序,都属于同一个软件包(main),但是当我执行“go build main.go”时,构build不成功。 当它只是一个文件(main.go)一切正常。 现在,我花了一些努力来分离代码,看起来编译器无法find从main.go中取出的东西,并将其放入这两个其他文件(与main.go位于同一目录) 。 这会导致“未定义”types的错误。

我读了一些关于设置GOPATHvariables的信息,所以我试了一下

set GOPATH=%cd% go build main.go 

但是这也不起作用。

任何帮助表示赞赏。

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

把你所有的文件放在这样的目录下

 myproject/go/src/myprog/xxx.go 

然后添加myproject/go GOPATH

并运行

 go install myprog 

这样你就可以在myproject / go / src中添加其他软件包和程序。

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

(这个文件总是被新手错过,起初经常被人误解,应该得到Go团队海事组织的最大关注)

当你将代码从main.go分离到例如more.go ,你只需传递该文件即可go build / go run / go install

所以如果你以前跑了

 go build main.go 

你现在简单

 go build main.go more.go 

更多信息:

 go build --help 

状态:

 If the arguments are a list of .go files, build treats them as a list of source files specifying a single package. 

注意, go buildgo install不同的是前两个状态期望包名作为参数,而后者期望去文件 。 但是,前两个也将接受去安装文件。

如果您想知道:build会生成包/文件, install会在您的GOPATH中生成对象和二进制文件,然后run将编译并运行您的程序。

你也可以运行

 go build 

在你的项目文件夹myproject / go / src / myprog中

然后你可以input

 ./myprog 

运行你的应用程序