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?