go-doc-标签

使用方法

  • 构建约束以一行+build开始的注释。在+build之后列出了一些条件,在这些条件成立时,该文件应包含在编译的包中;
  • 约束可以出现在任何源文件中,不限于go文件;
  • +build必须出现在package语句之前,+build注释之后应要有一个空行。
1
2
3
4
5
6
7
8
9
10
//
// +build debug

package main

import "fmt"

func main() {
fmt.Println("Hello World!")
}

语法规则

详细信息,可以查看go/build/build.go文件中shouldBuildmatch方法。

  • 只允许是字母数字或_
  • 多个条件之间,空格表示OR;逗号表示AND;叹号(!)表示NOT
  • 一个文件可以有多个+build,它们之间的关系是AND。如:
1
2
3
4
// +build linux darwin
// +build 386
等价于
// +build (linux OR darwin) AND 386
  • 预定义了一些条件:
    runtime.GOOS、runtime.GOARCH、compiler(gc或gccgo)、cgo、context.BuildTags中的其他单词
  • 如果一个文件名(不含后缀),以 *_GOOS, *_GOARCH, 或 *_GOOS_GOARCH结尾,它们隐式包含了 构建约束
  • 当不想编译某个文件时,可以加上// +build ignore。这里的ignore可以是其他单词,只是ignore更能让人知道什么意思

构建参数

1
2
// 多个标签空格隔开
-tags "xxx1 xxx2"