如何 switch/select 在进行交叉编译时使用什么代码

how to switch/select what code to use while doing cross compiling

我正在使用 +build 标签来定义要根据体系结构编译的内容。

对于只在 UNIX/BSD 上运行的代码,我使用这个:

// +build freebsd netbsd openbsd dragonfly darwin 
// +build amd64

对于 linux 我有:

// +build linux

包含源代码的文件名是这样的:

watchpid.go
watchpid_linux.go

这些文件包含相同的方法签名但方法不同。

func watchPid() {
  // kqueue for UNIX, BSD
  // for loop cross-platform version (linux)
}

如果我想 test/compile 例如 Mac OS X 上的 linux 版本,有没有简单的 switch/trick 来做它而不是编辑 +build 标签或重命名文件?

使用GOOS=linux go build

查看https://golang.org/cmd/go/#hdr-Environment_variables and http://dave.cheney.net/2015/08/22/cross-compilation-with-go-1-5