GO语言是否有预处理器?当我查找互联网时,很少有* .pgo转换为* .go的方法。而且,我想知道Go是否可行。
#ifdef COMPILE_OPTION
{compile this code ... }
#elif
{compile another code ...}
,或者
#undef in c
答案 0 :(得分:17)
实现这一目标的最接近方法是使用build constraints。例如:
main.go
package main
func main() {
println("main()")
conditionalFunction()
}
a.go
// +build COMPILE_OPTION
package main
func conditionalFunction() {
println("conditionalFunction")
}
b.go
// +build !COMPILE_OPTION
package main
func conditionalFunction() {
}
输出:
% go build -o example ; ./example
main()
% go build -o example -tags COMPILE_OPTION ; ./example
main()
conditionalFunction
答案 1 :(得分:0)
可能有可能使用Java Comment Preprocessor + maven golang plugin并获得一些类似的行为,在golang代码看起来像
的情况下//#if COMPILE_OPTION
fmt.Println("Ok")
//#else
fmt.Println("No")
//#endif
答案 2 :(得分:0)
请注意,可以使用任何宏语言作为go的预处理器。一个例子就是GNU的m4宏语言。
然后,您可以将代码编写为* .go.m4文件,使用构建系统通过m4馈送它们,将它们转换为生成的* .go文件,然后进行编译。
这对于编写泛型也很方便。