0

我正在尝试制作一个 Taskfile.yml 文件来构建 Go 应用程序,但在构建 main.go 之前我不太了解“GOFLAGS=-mod=mod”命令的需要。

参考:https ://dev.to/aurelievache/learning-go-by-examples-part-3-create-a-cli-app-in-go-1h43

4

1 回答 1

0

所以这里有两件事

  • GOFLAGS
    • 这只不过是一个环境变量(如果您不了解环境变量是什么,请将其视为当前环境中的任何进程都可以访问的值。这些值由操作系统维护)。
    • 所以这个GOFLAGS变量有一个空格分隔的标志列表,将自动传递给适当的 go 命令。
    • 我们这里设置的标志是mod,这个标志适用于该go build命令,可能不适用于其他 go 命令。
    • 如果你好奇这是怎么go做的,请参考这个变更请求
  • 设置-mod=mod标志,实际上在做go build什么?
    • -mod标志控制 go.mod 是否可以自动更新以及是否使用供应商目录。
    • -mod=mod告诉 go 命令忽略供应商目录并自动更新 go.mod,例如,当任何已知模块未提供导入的包时。
    • 参考这个

所以

GOFLAGS="-mod=mod" go build main.go

相当于

go build -mod=mod main.go
于 2022-02-22T23:42:25.203 回答