文章來源:
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源文件相同。可以在不同平台下有條件的包含一些測試樣例。同樣,標准庫也包含了大量的例子