我需要能够构建go应用程序的不同版本;“调试”版本和普通版本。
这很容易做到;我只是有一个const DEBUG,它控制应用程序的行为,但是每次我需要在构建类型之间进行交换时,都必须编辑配置文件,这很烦人。
我正在阅读有关go build(http://golang.org/pkg/go/build/)和标签的信息,我想也许我可以这样做:
config.go:
// +build !debug package build const DEBUG = false
config.debug.go:
// +build debug package build const DEBUG = true
然后,我应该能够使用“ go build”或“ go build -tags debug”进行构建,并且标签应排除config.go并包含config.debug.go。
…但这是行不通的。我得到:
src / build / config.go:3:在此块(<0>)中先前src / build / config.debug.go:3处重新声明了调试。
我究竟做错了什么?
我应该使用另一种更合适的#ifdef样式来做到这一点吗?
请参阅我对另一个问题的回答。您需要在“ // + build”行之后留空行。
另外,您可能想要“!” 在config.go中,而不是在config.debug.go中;并且可能您希望其中一个是“ DEBUG = false”。