Golang条件编译

我在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 -tags 'main1'

# test

./main2.go:8: main redeclared in this block

        previous declaration at ./main1.go:8


慕尼黑的夜晚无繁华
浏览 258回答 3
3回答

慕的地6264312

您必须跟随// +build XXX一个空白行。在我的简短搜索中,找不到该文件的记录位置/位置。但消息人士清楚地指出了这一点

慕虎7371278

正确,您必须在其后// +build XXX而不是恰好之前留一个空行,package main因为声明该包的行之前的所有注释行均被视为该包的描述,并由解析godoc。

万千封印

包构建建立约束构建约束是从指令开始的行注释,该指令 +build列出了应在文件中包含文件的条件。约束可能会出现在任何类型的源文件中(不仅是Go),但它们必须出现在文件顶部附近,并且只能出现空白行和其他行注释。为了将构建约束与程序包文档区分开,必须在一系列构建约束后跟一个空行。在构建约束之后添加一个空白行。例如,// +build main1package mainimport (    "fmt")func main() {    fmt.Println("This is main 1")}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go