在golang中,我能够在文件的第一行注释中设置编译器指令,以确定该文件上的代码是否包含在基于OS或arch的构建中,例如
目标窗口:
// +build windows
或非Windows:
// +build !windows
有没有办法在构建时传入我自己的布尔变量来以相同的方式运行?
背景是我想要一个布尔调试标志,我可以传入它来进行调试构建,我不希望我的调试代码包含在正常构建中。
我目前做的事情是这样的:
go build -ldflags "-X main.Debug=true"
但我更喜欢使用第一行注释方法,因为这种方法不会忽略构建中的调试代码(我认为)。
理想情况下我想:
调试on.go
// +build debug
package debug
func Debug() bool {
return true
}
和 debug-off.go
// +build !debug
package debug
func Debug() bool {
return false
}
更新RE重复 我接受相关的问题有相同的主题,但它确实不是一个重复的问题,这是一个已经知道这个功能但正在努力实现的人的问题。
我的2美分似乎相当于“人们在法国说什么语言?” vs“你怎么说'这不是一个重复'的法语?”
答案 0 :(得分:6)
Go是一个管理Go源代码的工具。
用法:
go command [arguments]
Compile packages and dependencies
用法:
go build [-o output] [-i] [build flags] [packages]
Build编译导入路径命名的包,以及 他们的依赖项,但它不安装结果。
构建标志由build,clean,get,install,list共享, 运行和测试命令:
-tags 'tag list' a space-separated list of build tags to consider satisfied during the build. For more information about build tags, see the description of build constraints in the documentation for the `go/build` package.
例如,在源代码中,
// +build debug
在运行时,build
,clean
,get
,install
,list
,run
和test
{ {1}}命令,
go