2016-08-15 4 views
5

Does golang unterstütztC-Stil bedingte Kompilierung in golang

#define DEBUG 

#ifdef DEBUG 
    fmt.Println("Debug message..."); 
#endif 

So kann ich eine Debug-Version mit Null-Laufzeit-Overhead bauen?

+1

Streng sp oken nein. Es gibt keinen Präprozessor und daher keine Präprozessor-Magie. – lofcek

+0

wie in Java gibt es keinen eingebetteten Präprozessor in GoLang, aber wie Java ist es auch möglich, dritte Seite ähnliche Tools zu verwenden. zum Beispiel benutze ich [Java Kommentar Preprozessor + mvn-golang] (https://github.com/raydac/mvn-golang/tree/master/mvn-golang-examples/mvn-golang-examples-preprocessing) und es ist gut Ergebnisse –

Antwort

12

Go verfügt nicht über einen Präprozessor oder ein Makrosystem. Sie können Tags übergeben, um über das Flag -tags zu bauen, und Build-Einschränkungen verwenden. Um dies zu tun, benötigen Sie zwei Versionen der gleichen Quelle und nur eine würde abhängig davon, ob das Tag vorhanden ist, erstellt werden.

Blick auf Build Einschränkungen in 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") 
} 

Hier go build mit main_release.go kompilieren würde und go build -tags debug würde kompilieren mit main_debug.go

+0

Scheint, es ist die beste Praxis für jetzt ... –

Verwandte Themen