为了账号安全,请及时绑定邮箱和手机立即绑定

Golang条件编译

Golang条件编译

Go
慕尼黑的夜晚无繁华 2021-05-07 01:25:15
我在Go 1中使用条件编译遇到了麻烦。这是我的测试代码。关于“ // + build”约束和“ -tags”标志,我有什么误解吗?main1.go// +build main1package mainimport (    "fmt")func main() {    fmt.Println("This is main 1")}main2.go// +build main2package mainimport (    "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
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您必须跟随// +build XXX一个空白行。

在我的简短搜索中,找不到该文件的记录位置/位置。但消息人士清楚地指出了这一点


查看完整回答
反对 回复 2021-05-10
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

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


查看完整回答
反对 回复 2021-05-10
?
万千封印

TA贡献1891条经验 获得超3个赞

包构建

建立约束

构建约束是从指令开始的行注释,该指令 +build列出了应在文件中包含文件的条件。约束可能会出现在任何类型的源文件中(不仅是Go),但它们必须出现在文件顶部附近,并且只能出现空白行和其他行注释。

为了将构建约束与程序包文档区分开,必须在一系列构建约束后跟一个空行。

在构建约束之后添加一个空白行。例如,

// +build main1


package main


import (

    "fmt"

)


func main() {

    fmt.Println("This is main 1")

}


查看完整回答
反对 回复 2021-05-10
  • 3 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信