dongyou7292 2017-10-08 11:57
浏览 12

编译器时间码块

Is it possible to detect for example OS name at compiler time and compiler specified code block like:

version(windows)
{
}

version(linux)
{
}
  • 写回答

1条回答 默认 最新

  • dsnhalq37505 2017-10-08 12:11
    关注

    Go resolves this automatically in build-time. All you need to place the code in corresponding files:

    • file_linux.go - code for linux version
    • file_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.

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

    评论

报告相同问题?