在Go中,文件名具有语义含义。例如:
*_windows.go // Only include in compilations for Windows
*_unix.go // Only include in compilations for Unix
*_386.go // Only include in compilations for 386 systems
*_test.go // Only include when run with `go test`
但是,我似乎无法让以下工作:
*_windows_test.go // Only include when running `go test` on windows
*_test_windows.go // Another attempt
Go甚至可以实现吗?如果是这样,怎么样?
答案 0 :(得分:2)
只需在测试文件上使用build constraint即可。
// +build windows
构建约束被评估为空格分隔选项的OR;每个选项评估为逗号分隔术语的AND;并且每个术语都是一个字母数字,或者在其前面是!,否定。也就是说,构建约束:
答案 1 :(得分:2)
原来我错了。它确实有效。问题是我还有一个名为foo_unix_test.go
的文件,显然Go不支持*_unix.go
语法作为特例。