如何使用go build-ldflags在编译时设置布尔变量

如何使用go build-ldflags在编译时设置布尔变量,go,ld,Go,Ld,我有一个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程序
测试。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                                                                                                                                                                                                                             
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                                                                               

它不起作用,但当
调试\u模式
字符串
时,它起作用。您只能使用
-X
链接器标志设置字符串变量:

您可以改为使用字符串:

var DebugMode = "true"
然后

go build -ldflags "-X main.DebugMode=false" test.go && ./test

-X可以工作,但仅适用于字符串。考虑使用构建标记。
go build -ldflags "-X main.DebugMode=false" test.go && ./test