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 关注
- 166 浏览
添加回答
举报