golang build 编译规则

文章来源:

http://blog.csdn.net/varding/article/details/12675971

讲述了golang中的条件编译,摘要如下:

第一种条件编译的方法:编译标签

编译标签添加的规则(附上原文):

1. a build tag is evaluated as the OR of space-separated options
2. each option evaluates as the AND of its comma-separated terms
3. each term is an alphanumeric word or, preceded by !, its negation

1). 编译标签由空格分隔的编译选项(options)以"或"的逻辑关系组成

2). 每个编译选项由逗号分隔的条件项以逻辑"与"的关系组成

3). 每个条件项的名字用字母+数字表示,在前面加!表示否定的意思

标签的结尾添加一个空行这样标签就不会当做其他声明的注释

第二种条件编译方法:文件后缀

这个方法通过改变文件名的后缀来提供条件编译,这种方案比编译标签要简单,go/build可以在不读取源文件的情况下就可以决定哪些文件不需要参与编译

文件命名约定可以在go/build 包里找到详细的说明,简单来说如果你的源文件包含后缀:_$GOOS.go,那么这个源文件只会在这个平台下编译,_$GOARCH.go也是如此。这两个后缀可以结合在一起使用,但是要注意顺序:_$GOOS_$GOARCH.go,    不能反过来用:_$GOARCH_$GOOS.go

mypkg_linux.go         // only builds on linux systems  

mypkg_windows_amd64.go // only builds on windows 64bit platforms

Test文件也支持编译标签和文件后缀条件编译,并且作用方式与go源文件相同。可以在不同平台下有条件的包含一些测试样例。同样,标准库也包含了大量的例子

原文地址:https://www.cnblogs.com/hetonghai/p/6476510.html