为了账号安全,请及时绑定邮箱和手机立即绑定

Golang Preprocessor like C-style compile switch

Golang Preprocessor like C-style compile switch

Go
慕少森 2022-01-04 18:54:59
GO 语言有预处理器吗?当我查找互联网时,很少有方法可以将 *.pgo 转换为 *.go。而且,我想知道它在 Go 中是否可行#ifdef COMPILE_OPTION  {compile this code ... }#elif   {compile another code ...}或者, #undef in c
查看完整描述

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


查看完整回答
反对 回复 2022-01-04
?
精慕HU

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


查看完整回答
反对 回复 2022-01-04
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

请注意,可以使用任何宏语言作为 go 的预处理器。一个例子是 GNU 的 m4 宏语言。

然后你可以在 *.go.m4 文件中编写你的代码,使用你的构建系统通过 m4 将它们提供给它们,将它们转换为生成的 *.go 文件,然后编译它们。

这对于编写泛型也很方便。


查看完整回答
反对 回复 2022-01-04
  • 3 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信