The go build command’s -ldflags option lets you override constant values in your Go source code right at compile time.
// main.go
package main
import "fmt"
const isDebug = false // Default: false; override via -ldflags in build scripts
func main() {
if isDebug {
fmt.Println("DEBUG: This is a test message")
}
}
To set the isDebug constant during build (injected at link time):
go build -ldflags "-X main.isDebug=true" -o main.exe
It’s akin to using -D in C/C++ compilers to define macros or set their values at compile time.