我知道我可以命名特定的文件_windows.go,_linux.go等,这将使它们只为该特定操作系统编译。
在一个没有在文件名中指定go os的文件中,有没有办法可以根据go os设置文件中的变量和/或常量?也许在案例陈述中?
答案 0 :(得分:6)
runtime.GOOS
是你的朋友。但是,请记住,您不能基于它设置常量(尽管您可以将其复制到您自己的常量) - 仅限变量,并且仅在运行时。您可以在模块中使用init()
函数在程序启动时自动运行检测。
package main
import "fmt"
import "runtime"
func main() {
fmt.Println("this is", runtime.GOOS)
foo := 1
switch runtime.GOOS {
case "linux":
foo = 2
case "darwin":
foo = 3
case "nacl": //this is what the playground shows!
foo = 4
default:
fmt.Println("What os is this?", runtime.GOOS)
}
fmt.Println(foo)
}
答案 1 :(得分:3)
看看runtime.GOOS
。
GOOS是正在运行的程序的操作系统目标:darwin之一, freebsd,linux等等。
switch runtime.GOOS {
case "linux":
fmt.Println("Linux")
default:
fmt.Println(runtime.GOOS)
}