是否可以在编译器时检测到OS名称和编译器指定的代码块,如:
version(windows)
{
}
version(linux)
{
}
答案 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构建程序包时包含。