3 回答

TA貢獻1816條經驗 獲得超6個贊
實現這一目標的最接近方法是使用構建約束。例子:
main.go
package main
func main() {
println("main()")
conditionalFunction()
}
前
// +build COMPILE_OPTION
package main
func conditionalFunction() {
println("conditionalFunction")
}
b. 去
// +build !COMPILE_OPTION
package main
func conditionalFunction() {
}
輸出:
% go build -o example ; ./example
main()
% go build -o example -tags COMPILE_OPTION ; ./example
main()
conditionalFunction

TA貢獻1845條經驗 獲得超8個贊
可能可以使用Java Comment Preprocessor + maven golang plugin并獲得一些類似的行為,在這種情況下 golang 代碼看起來像
//#if COMPILE_OPTION
fmt.Println("Ok")
//#else
fmt.Println("No")
//#endif
一些例子已經放在這里https://github.com/raydac/mvn-golang/tree/master/mvn-golang-examples/mvn-golang-examples-preprocessing

TA貢獻1900條經驗 獲得超5個贊
請注意,可以使用任何宏語言作為 go 的預處理器。一個例子是 GNU 的 m4 宏語言。
然后你可以在 *.go.m4 文件中編寫你的代碼,使用你的構建系統通過 m4 將它們提供給它們,將它們轉換為生成的 *.go 文件,然后編譯它們。
這對于編寫泛型也很方便。
- 3 回答
- 0 關注
- 197 瀏覽
添加回答
舉報