首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Golang条件编译

Golang条件编译
EN

Stack Overflow用户
提问于 2012-05-18 12:02:01
回答 4查看 21.3K关注 0票数 51

我在Go 1中遇到了条件编译的麻烦。

这是我的测试代码。关于"// +build“约束和"-tags”标志,我有什么误解吗?

main1.go

代码语言:javascript
运行
复制
// +build main1
package main

import (
    "fmt"
)

func main() {
    fmt.Println("This is main 1")
}

main2.go

代码语言:javascript
运行
复制
// +build main2
package main

import (
    "fmt"
)

func main() {
    fmt.Println("This is main 2")
}

当运行"go build“时,我仍然得到编译错误

代码语言:javascript
运行
复制
$ go build -tags 'main1'
# test
./main2.go:8: main redeclared in this block
        previous declaration at ./main1.go:8
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-18 17:00:43

您必须在// +build XXX后面加上一个空行。

在我的简短搜索中,我找不到哪里/是否有文档记录。但the source明确地说出了这一点

票数 76
EN

Stack Overflow用户

发布于 2012-12-03 05:18:05

是的,您必须在// +build XXX之后但在package main之前保留一个空行,因为声明包的行之前的所有注释行都被认为是包的描述,并由godoc解析。

票数 12
EN

Stack Overflow用户

发布于 2013-06-16 23:59:10

Package build

构建约束

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

为了将生成约束与包文档区分开来,一系列生成约束后面必须跟一个空行。

在生成约束之后添加一个空行。例如,

代码语言:javascript
运行
复制
// +build main1

package main

import (
    "fmt"
)

func main() {
    fmt.Println("This is main 1")
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10646531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档