2014-12-03 7 views
5

Mam program odchodzenie test.goJak ustawić zmienną logiczną na czasie kompilacji używając odchodzenie build -ldflags

package main 

import "fmt" 

var DEBUG_MODE bool = true  

func main() { 
    fmt.Println(DEBUG_MODE) 
} 

Chcę ustawić DEBUG_MODE zmiennej w czasie compile do false

próbowałam :

go build -ldflags "-X main.DEBUG_MODE 0" test.go && ./test 
true                                                        
[email protected]:18:49:32:/tmp$ go build -ldflags "-X main.DEBUG_MODE false" test.go && ./test 
true                                                        
[email protected]:18:49:41:/tmp$ go build -ldflags "-X main.DEBUG_MODE 0x000000000000" test.go && ./test                                 
true                    

to nie działa, ale działa, gdy DEBUG_MODE jest string

+0

X działa, ale tylko na smyczki. Rozważ użycie tagu budowania. – Volker

Odpowiedz

5

Można ustawić tylko zmienne łańcuchowe z flagerem link -X. 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. 

Można użyć ciągu Zamiast:

var DebugMode = "true" 

a następnie

go build -ldflags "-X main.DebugMode=false" test.go && ./test 
Powiązane problemy