Is it possible to detect for example OS name at compiler time and compiler specified code block like:
version(windows)
{
}
version(linux)
{
}
Is it possible to detect for example OS name at compiler time and compiler specified code block like:
version(windows)
{
}
version(linux)
{
}
Go resolves this automatically in build-time. All you need to place the code in corresponding files:
file_linux.go
- code for linux versionfile_windows.go
- code for windows version.If a file's name, after stripping the extension and a possible
_test
suffix, matches any of the following patterns:*_GOOS
*_GOARCH
*_GOOS_GOARCH (example:
source_windows_amd64.go
)where GOOS and GOARCH represent any known operating system and architecture values respectively, then the file is considered to have an implicit build constraint requiring those terms (in addition to any explicit constraints in the file).
Naming a file
dns_windows.go
will cause it to be included only when building the package for Windows; similarly,math_386.s
will be included only when building the package for 32-bit x86.