一尘不染

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

go

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

现在我花了一些精力来分离代码,看起来编译器无法找到从main.go其他两个文件中取出并放入的东西(与 main.go 位于同一目录中)。这会导致undefined 'type'错误。

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


阅读 187

收藏
2021-11-29

共1个答案

一尘不染

从 Go 1.11+ 开始,不再推荐使用 GOPATH,新的方式是使用 Go Modules。

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

  1. 创建目录:

sh mkdir simple cd simple

  1. 创建一个新模块:

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.

  1. 将所有文件放在该目录中。

  2. 最后,运行:

sh go run .

  1. 或者,您可以通过构建它来创建一个可执行程序:

```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 中,模块支持被认为可以用于生产,并鼓励所有用户从其他依赖管理系统迁移到模块。

2021-11-29