Does golang obsługujeC-styl warunkowa kompilacja w golang
#define DEBUG
#ifdef DEBUG
fmt.Println("Debug message...");
#endif
Więc mogę zbudować wersję debugowania przy zerowym obciążeniu wykonywania?
Does golang obsługujeC-styl warunkowa kompilacja w golang
#define DEBUG
#ifdef DEBUG
fmt.Println("Debug message...");
#endif
Więc mogę zbudować wersję debugowania przy zerowym obciążeniu wykonywania?
Go nie ma preprocesora ani systemu makr. Możesz przekazać znaczniki, aby zbudować flagę -tags
i użyć ograniczeń kompilacji. Aby to zrobić, potrzebujesz dwóch wersji tego samego źródła i tylko jeden będzie budowany w zależności od tego, czy tag jest obecny, czy nie.
Spójrz ograniczeń budować w https://golang.org/pkg/go/build/
main_debug.go
// +build debug
package main
import (
"fmt"
)
func main() {
fmt.Println("Debug build")
}
main_release.go
// +build !debug
package main
import (
"fmt"
)
func main() {
fmt.Println("Release build")
}
Tutaj go build
by skompilować z main_release.go i go build -tags debug
by skompilować z main_debug.go
Wygląda na to, że jest to najlepsza praktyka na razie ... –
Ściśle sp oken nie. Nie ma preprocesora, a zatem nie ma magii preprocesora. – lofcek
podobnie jak w Javie nie ma żadnego wbudowanego preprocesora w GoLangu, ale także jak w Javie można używać podobnych narzędzi na stronie trzeciej. na przykład używam [Java Comment Preprocessor + mvn-golang] (https://github.com/raydac/mvn-golang/tree/master/mvn-golang-examples/mvn-golang-examples-preprocessing) i robi to dobrze wyniki –