如果我猜对了,GOOS是在编译源代码时确定的。
GOOS
为了更好地支持多个操作系统,我对GOOS可能是什么感兴趣。
当然,它可能有无限的可能性,因为 Go 是开源的。所以我真正想要的是一个“通用列表”。
已知值是:
windows
linux
darwin
freebsd
unix
请注意,这些值在src/go/build/syslist.go.
src/go/build/syslist.go
随着围棋1.5(Q3 2015年),GOARCH将成为很多更加完整。 见提交1eebb91由Minux马(minux)
GOARCH
minux
`go/build:GOARCH为所有常见架构保留值 每当我们引入一个新的GOARCH、旧的 Go 版本时都不会识别它们,这会给我们的用户和我们带来麻烦(我们需要添加不必要的构建标签)。 到目前为止arm64 ppc64 ppc64le,Go 1.5 引入了三个新的 GOARCHe:,我们可以花时间为 Go 将来可能支持的所有常见架构引入 GOARCHe,以避免出现问题。
每当我们引入一个新的GOARCH、旧的 Go 版本时都不会识别它们,这会给我们的用户和我们带来麻烦(我们需要添加不必要的构建标签)。
到目前为止arm64 ppc64 ppc64le,Go 1.5 引入了三个新的 GOARCHe:,我们可以花时间为 Go 将来可能支持的所有常见架构引入 GOARCHe,以避免出现问题。
arm64 ppc64 ppc64le
const goosList = "android darwin dragonfly freebsd linux nacl \ netbsd openbsd plan9 solaris windows " const goarchList = "386 amd64 amd64p32 arm arm64 ppc64 ppc64le \ mips mipsle mips64 mips64le mips64p32 mips64p32le \ # (new) ppc s390 s390x sparc sparc64 " # (new)
该列表仍在Change 9644 中进行审核,有如下评论:
我不会打扰安腾。它基本上是一个死的架构。 另外,为它编写编译器非常困难,我真的看不到它的发生,除非是出于热爱,而且没有人喜欢 Itanium。
现在的官方文档(GO 1.5+ Q3 2015)反映了完整的列表。
2018 年更新:如Giorgos Oikonomou的回答中所述,Go 1.7(2016 年第一季度)引入了该 go tool dist list命令。 请参阅提交 c3ecded:它修复了2015 年第三季度开放的问题 12270:
go tool dist list
为了更容易地编写交叉编译工具,最好以编程方式获得 GOOS 和 GOARCH 的可能组合。
这是在CL 19837 中实现的]
cmd/dist: 引入list子命令来列出所有支持的平台
cmd/dist
list
您可以以纯文本或 json 格式列出:
> go tool dist list -json [ { "GOOS": "android", "GOARCH": "386", "CgoSupported": true }, ... ]
正如马克·贝所说:
奖励:列输出格式正确以供显示: golang go tool dist list | column -c 75 | column -t
奖励:列输出格式正确以供显示:
golang go tool dist list | column -c 75 | column -t