登录
首页 >  Golang >  Go问答

给定一个可执行文件,我可以确定用于构建它的 GOOS 和 GOARCH 的值吗?

来源:Golang技术栈

时间:2023-03-24 07:56:02 308浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《给定一个可执行文件,我可以确定用于构建它的 GOOS 和 GOARCH 的值吗?》,文章讲解的知识点主要包括golang,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

标题几乎概括了它。我怎样才能确定 GOOS 和 GOARCH 的值只被赋予了 go 可执行文件?

正确答案

编辑:runtime.GOROOT() Go 1.10 中更改的行为,有关详细信息,请参阅Go 1.10 发行说明 # Runtime。基本上现在runtime.GOROOT()检查是否GOROOT设置了环境变量,如果是,则返回其值。如果不是,则返回GOROOT编译时记录的值。


查看runtime包装:

GOARCH、GOOS、GOPATH 和 GOROOT 环境变量完善了 Go 环境变量集。它们影响 Go 程序的构建(参见https://golang.org/cmd/gohttps://golang.org/pkg/go/build)。 GOARCH、GOOS 和 GOROOT 在编译时记录, 并通过此包中的常量或函数提供,但它们不影响运行时系统的执行。

可以在此处找到GOARCH和的可能组合列表: https ://golang.org/doc/install/source#environmentGOOS

所以你正在寻找的是runtime包中的常量:

runtime.GOOS
runtime.GOARCH

它们将准确包含构建您的应用程序时存在的值。

例如看这个简单的应用程序:

func main() {
    fmt.Println(runtime.GOOS)
    fmt.Println(runtime.GOARCH)
}

让我们说GOOS=windowsGOARCH=amd64。运行它go run xx.go会打印:

windows
amd64

从中构建一个 exe(例如go build)。运行exe具有相同的输出。

现在更改GOARCH386. 如果您使用它运行它go run(或构建一个 exe 并运行它),它将打印:

windows
386

如果你运行之前构建的 exe,它仍然会打印:

windows
amd64

今天关于《给定一个可执行文件,我可以确定用于构建它的 GOOS 和 GOARCH 的值吗?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表