我有一个由三个文件组成的小程序,它们都属于同一个包(主)。但是当我这样做时go build main.go,构建没有成功。当它只有一个文件 ( main.go) 时,一切正常。
go build main.go
main.go
现在我花了一些精力来分离代码,看起来编译器无法找到从main.go其他两个文件中取出并放入的东西(与 main.go 位于同一目录中)。这会导致undefined 'type'错误。
undefined 'type'
如何编译这个由多个文件组成的程序?
从 Go 1.11+ 开始,不再推荐使用 GOPATH,新的方式是使用 Go Modules。
simple
sh mkdir simple cd simple
sh go mod init github.com/username/simple # Here, the module name is: github.com/username/simple. # You're free to choose any module name. # It doesn't matter as long as it's unique. # It's better to be a URL: so it can be go-gettable.
将所有文件放在该目录中。
最后,运行:
sh go run .
```sh go build .
# then: ./simple # if you’re on xnix
# or, just: simple # if you’re on Windows ```
有关更多信息,您可以阅读此。
从 1.11 开始,Go 已经包含了对版本模块的支持,正如这里提出的那样。最初的原型 vgo 于 2018 年 2 月发布。 2018 年 7 月,版本化模块登陆 Go 主存储库。在 Go 1.14 中,模块支持被认为可以用于生产,并鼓励所有用户从其他依赖管理系统迁移到模块。