如何在运行时检测 $GOHOSTOS 和 $GOHOSTARCH?

如何在运行 go 二进制文件的任何系统上检测 $GOHOSTOS 和 $GOHOSTARCH 的值?请注意,即使主机上没有安装 go 编译器,我也想检测这些值。


白猪掌柜的
浏览 375回答 2
2回答

www说

$GOHOSTOS和( 分别为和$GOHOSTARCH提供默认值) 在构建 go 程序时使用,不会影响运行时系统的执行。GOOSGOARCHGOOS并GOARCH在编译时记录并通过常量runtime.GOOS和runtime.GOARCH. 您可能需要检查这些常量。

沧海一幻觉

短版,你不能。长版本,您可以创建一个将信息嵌入代码中的构建脚本,例如:- main.go:package mainimport (    "fmt"    "runtime")var (    hostOS   string    hostArch string)func main() {    fmt.Println("runtime values:", runtime.GOOS, runtime.GOARCH)    fmt.Println("build time values:", hostOS, hostArch)}- 构建.sh#!/bin/sh# replace main. with whatever package you're usinggo build -ldflags "-X main.hostOS=$(go env GOHOSTOS) -X main.hostArch=$(go env GOHOSTARCH)" $*- 输出:$ env GOARCH=386 ./build.sh$ ./tmpruntime values: linux 386build time values: linux amd64
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go