Golang有条件编译
在Go 1中,我有条件编译的麻烦。
这是我的testing代码。 有什么我误解了“+ +构build”约束和“标签”标志?
main1.go
// +build main1 package main import ( "fmt" ) func main() { fmt.Println("This is main 1") }
main2.go
// +build main2 package main import ( "fmt" ) func main() { fmt.Println("This is main 2") }
当运行“去build立”,我仍然有编译错误
$ go build -tags 'main1' # test ./main2.go:8: main redeclared in this block previous declaration at ./main1.go:8
您必须按照// +build XXX
生成一个空行的// +build XXX
。
在我的简短search中,我无法find/如果这是logging。 但是消息来源明确地说出来了
对,你必须留下一个空行,不是完全在// +build XXX
而是在package main
之前,因为在声明包的行之前的所有注释行都被认为是包的描述并由godoc
parsing。
包构build
构build约束
构build约束是一个以
+build
指令开始的行注释,列出了文件应该包含在包中的条件。 约束可能出现在任何types的源文件中(不仅仅是Go),但是它们必须出现在文件的顶部附近,仅由空行和其他行注释开头。为了将构build约束与包文档区分开来,一系列的构build约束必须在后面加一个空行。
在构build约束之后添加一个空行。 例如,
// +build main1 package main import ( "fmt" ) func main() { fmt.Println("This is main 1") }