Como usar corretamente tags de compilação?

Eu preciso ser capaz de construir diferentes versões de um aplicativo go; uma versão 'debug' e uma versão normal.

Isso é fácil de fazer; Eu simplesmente tenho um const DEBUG, que controla o comportamento do aplicativo, mas é irritante ter que editar o arquivo de configuração toda vez que eu precisar trocar entre os tipos de compilação.

Eu estava lendo sobre ir construir (http://golang.org/pkg/go/build/) e tags, pensei que talvez pudesse fazer isso:

config.go:

// +build !debug
package build
const DEBUG = false

config.debug.go:

// +build debug
package build
const DEBUG = true

Então eu deveria ser capaz de construir usando "go build" ou "go build -tags debug", e as tags devem excluir config.go e incluir config.debug.go.

... mas isso não funciona. Eu recebo:

src / build / config.go: 3: DEBUG redeclarado neste bloco (<0>) declaração anterior em src / build / config.debug.go: 3

O que estou fazendo de errado?

Existe outra maneira mais adequada de fazer isso eu deveria estar usando?

questionAnswers(2)

yourAnswerToTheQuestion