Golang预处理器就像C风格的编译开关

GoG*_*oGo 14 go

GO语言有预处理器吗?当我查找互联网时,很少有*.pgo转换为*.go的方法.而且,我想知道Go是否可行

#ifdef COMPILE_OPTION
  {compile this code ... }
#elif 
  {compile another code ...}
Run Code Online (Sandbox Code Playgroud)

要么, #undef in c

Tim*_*per 21

最接近实现此目的的方法是使用构建约束.例:

main.go

package main

func main() {
    println("main()")
    conditionalFunction()
}
Run Code Online (Sandbox Code Playgroud)

// +build COMPILE_OPTION

package main

func conditionalFunction() {
    println("conditionalFunction")
}
Run Code Online (Sandbox Code Playgroud)

b.go

// +build !COMPILE_OPTION

package main

func conditionalFunction() {
}
Run Code Online (Sandbox Code Playgroud)

输出:

% go build -o example ; ./example
main()

% go build -o example -tags COMPILE_OPTION ; ./example
main()
conditionalFunction
Run Code Online (Sandbox Code Playgroud)