Injecting Values into Go Constants at Build Time with -ldflags

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.