Golang Preprocessor like C-style compile switch

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


#ifdef COMPILE_OPTION

  {compile this code ... }

#elif 

  {compile another code ...}

或者, #undef in c


慕少森
浏览 167回答 3
3回答

潇湘沐

实现这一目标的最接近方法是使用构建约束。例子:main.gopackage mainfunc main() {    println("main()")    conditionalFunction()}前// +build COMPILE_OPTIONpackage mainfunc conditionalFunction() {    println("conditionalFunction")}b. 去// +build !COMPILE_OPTIONpackage mainfunc conditionalFunction() {}输出:% go build -o example ; ./examplemain()% go build -o example -tags COMPILE_OPTION ; ./examplemain()conditionalFunction

精慕HU

可能可以使用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

梵蒂冈之花

请注意,可以使用任何宏语言作为 go 的预处理器。一个例子是 GNU 的 m4 宏语言。然后你可以在 *.go.m4 文件中编写你的代码,使用你的构建系统通过 m4 将它们提供给它们,将它们转换为生成的 *.go 文件,然后编译它们。这对于编写泛型也很方便。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go