条件编译
在文件开始的位置package
语句之前,使用// +build
可以添加编译标签,以满足不同场景不同编译的需求
/a/hello_dev.go
// +build dev
package a
import "fmt"
func Hello() {
fmt.Println("hello dev")
}
/a/hello_www.go
// +build www
package a
import "fmt"
func Hello() {
fmt.Println("hello www")
}
/main.go
package main
import "lg/a"
func main() {
a.Hello()
}
编译
go build -tags dev
Goland设置
设置tags,避免编译器报错
image-20221120162911132
指定tags运行
image-20221120163046335
其他
文件名以
_linux
结尾,表示要设置linux
环境才能编译(windows
以及darwin
亦是如此)-
多标签:一个源码文件可以包含多个构建标签。构建标签遵循以下三个原则:
- 空格隔开的选项是或(OR)的关系
- 逗号隔开的选项是与(AND)的关系
- 每个选项由字母和数字组成。如果前面加上
!
,则表示反义
-
//go:build
是 Go 1.17 中引入的新条件编译指令格式。它旨在替换// +build
为何要采用新的格式呢?对比一下新旧格式的区别就知道了:
//go:build linux && amd64 || darwin // +build linux,amd64 darwin