英文:
How to set boolean variable on compile time using go build -ldflags
问题
我有一个名为test.go
的Go程序。
package main
import "fmt"
var DEBUG_MODE bool = true
func main() {
fmt.Println(DEBUG_MODE)
}
我想在编译时将DEBUG_MODE
变量设置为false
。
我尝试过:
go build -ldflags "-X main.DEBUG_MODE 0" test.go && ./test
true
go build -ldflags "-X main.DEBUG_MODE false" test.go && ./test
true
go build -ldflags "-X main.DEBUG_MODE 0x000000000000" test.go && ./test
true
这并不起作用,但当DEBUG_MODE
是一个string
时可以工作。
英文:
I have a go program test.go
package main
import "fmt"
var DEBUG_MODE bool = true
func main() {
fmt.Println(DEBUG_MODE)
}
I want to set the DEBUG_MODE
variable on the compile time to false
I've tried:
go build -ldflags "-X main.DEBUG_MODE 0" test.go && ./test
true
kyz@s497:18:49:32:/tmp$ go build -ldflags "-X main.DEBUG_MODE false" test.go && ./test
true
kyz@s497:18:49:41:/tmp$ go build -ldflags "-X main.DEBUG_MODE 0x000000000000" test.go && ./test
true
It doesn't work, but it works when DEBUG_MODE
is a string
答案1
得分: 6
你只能使用-X
链接器标志来设置字符串变量。来自文档:
-X importpath.name=value
将importpath中名为name的字符串变量的值设置为value。
注意,在Go 1.5之前,此选项需要两个单独的参数。
现在它接受一个在第一个等号上分割的参数。
你可以使用字符串代替:
var DebugMode = "true"
然后执行:
go build -ldflags "-X main.DebugMode=false" test.go && ./test
英文:
You can only set string variables with -X
linker flag. From the docs:
-X importpath.name=value
Set the value of the string variable in importpath named name to value.
Note that before Go 1.5 this option took two separate arguments.
Now it takes one argument split on the first = sign.
You can use a string instead:
var DebugMode = "true"
and then
go build -ldflags "-X main.DebugMode=false" test.go && ./test
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论