//go:build 和// build 指令的差異
//go:build 指令是新的條件編譯指令Go 1.17中引入,旨在替換// build 指令。雖然這兩個指令都允許您指定檔案應包含在套件中的條件,但//go:build 提供了幾個關鍵改進:
-
一致性: / / go:build 語法與其他現有的Go 指令和編譯指示一致,例如//go:generate.
-
增強表達式: //go:build 支援標準布林表達式(例如//go:build foo && bar),而// build 使用不太直觀的AND(逗號)和OR(空格)語法。
-
程式碼格式: //go:build 指令由 gofmt 自動格式化。這可以避免常見錯誤,例如指令和套件語句之間不留空行。
Go 1.18 提出 //go:build 作為首選指令,並計畫逐步刪除 // build線。兩個指令之間的轉換如下處理:
- 在 Go 1.18 及更高版本中, //go:build 是主要建立約束指令。
- 如果檔案缺少 // go:build 指令,任何 // build 指令仍然適用。
- 如果檔案同時包含 //go:build 和 // build 指令, //go:build將被視為事實來源,gofmt 將更新 // 建置以符合。
以上是Go 1.17 的 `//go:build`:它與條件編譯的 `// build` 有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!