在golang中,我能够在文件的第一行注释中设置编译器指令,以确定该文件上的代码是否包含在基于OS或arch的构建中,例如
目标窗口:
// +build windows
Run Code Online (Sandbox Code Playgroud)
或非窗口:
// +build !windows
Run Code Online (Sandbox Code Playgroud)
有没有办法在构建时传入我自己的布尔变量以同样的方式操作?
背景是我想要一个布尔调试标志,我可以传入它来进行调试构建,我不希望我的调试代码包含在正常构建中.
我目前做这样的事情:
go build -ldflags "-X main.Debug=true"
Run Code Online (Sandbox Code Playgroud)
但我更喜欢使用第一行注释方法,因为这种方法不会忽略构建中的调试代码(我推测).
理想情况下我想:
调试on.go
// +build debug
package debug
func Debug() bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
和debug-off.go
// +build !debug
package debug
func Debug() bool {
return false
}
Run Code Online (Sandbox Code Playgroud)
更新RE重复 我接受相关问题具有相同的主题但它实际上不是一个重复的问题,这是一个已经知道这个功能但正在努力实现的人的问题.
我的2美分似乎相当于"人们在法国说什么语言?" vs"你怎么说'这不是一个重复'的法语?"
Go是用于管理Go源代码的工具。
用法:
Run Code Online (Sandbox Code Playgroud)go command [arguments]
用法:
Run Code Online (Sandbox Code Playgroud)go build [-o output] [-i] [build flags] [packages]
Build编译由导入路径命名的包及其依赖项,但不会安装结果。
构建标志由构建,清理,获取,安装,列出,运行和测试命令共享:
Run Code Online (Sandbox Code Playgroud)-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
Run Code Online (Sandbox Code Playgroud)
在运行时,为build
,clean
,get
,install
,list
,run
,和test
go
命令,
$ go install -tags='debug'
Run Code Online (Sandbox Code Playgroud)