我在Go 1中遇到了条件编译的麻烦。
这是我的测试代码。关于"// +build“约束和"-tags”标志,我有什么误解吗?
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")
}
当运行"go build“时,我仍然得到编译错误
$ go build -tags 'main1'
# test
./main2.go:8: main redeclared in this block
previous declaration at ./main1.go:8
发布于 2012-05-18 17:00:43
您必须在// +build XXX
后面加上一个空行。
在我的简短搜索中,我找不到哪里/是否有文档记录。但the source明确地说出了这一点
发布于 2012-12-03 05:18:05
是的,您必须在// +build XXX
之后但在package main
之前保留一个空行,因为声明包的行之前的所有注释行都被认为是包的描述,并由godoc
解析。
发布于 2013-06-16 23:59:10
Package build
构建约束
构建约束是以指令+build
开头的行注释,该指令列出了文件应包含在包中的条件。约束可以出现在任何类型的源文件中(不仅仅是Go),但它们必须出现在文件顶部附近,前面只有空行和其他行注释。
为了将生成约束与包文档区分开来,一系列生成约束后面必须跟一个空行。
在生成约束之后添加一个空行。例如,
// +build main1
package main
import (
"fmt"
)
func main() {
fmt.Println("This is main 1")
}
https://stackoverflow.com/questions/10646531
复制相似问题