编译器时间代码块

时间:2017-10-08 11:57:43

标签: go

是否可以在编译器时检测到OS名称和编译器指定的代码块,如:

version(windows)
{
}

version(linux)
{
}

1 个答案:

答案 0 :(得分:6)

Go会在构建时自动解决此问题。您只需将代码放在相应的文件中即可:

  • file_linux.go - linux版本的代码
  • file_windows.go - Windows版本的代码。
  

如果文件的名称在剥离扩展名和可能的_test后缀之后符合以下任何模式:

     

* _ GOOS

     

* _ GOARCH

     

* _ GOOS_GOARCH   (例如:source_windows_amd64.go

     

其中GOOS和GOARCH代表任何已知的操作系统和体系结构值   分别,该文件被认为具有隐式构建   需要这些条款的约束(除了任何明确的   文件中的约束。)

     

命名文件dns_windows.go将导致仅在包含文件时将其包括在内   为Windows构建软件包;同样,math_386.s也是   仅在为32位x86构建程序包时包含。

https://golang.org/pkg/go/build/#hdr-Build_Constraints