如何根据操作系统设置变量

时间:2014-05-12 13:08:12

标签: build go

我知道我可以命名特定的文件_windows.go,_linux.go等,这将使它们只为该特定操作系统编译。

在一个没有在文件名中指定go os的文件中,有没有办法可以根据go os设置文件中的变量和/或常量?也许在案例陈述中?

2 个答案:

答案 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)
}