Golang 构建约束随机

我在头中有两个具有不同构建约束的 go 文件。


constants_production.go:


// +build production,!staging


package main


const (

  URL               = "production"

)

constants_staging.go:


// +build staging,!production


package main


const (

  URL               = "staging"

)

main.go:


package main


func main() {

  fmt.Println(URL)

}

当我执行 a 时go install -tags "staging",有时会打印production; 有时,它会打印staging. 同样,当我这样做时go install -tags "production",...


如何在每次构建时获得一致的输出?当我将暂存指定为构建标志时,如何使其打印暂存?当我将生产指定为构建标志时,如何使其打印生产?我在这里做错了吗?


慕沐林林
浏览 237回答 1
1回答

鸿蒙传说

go build并且go install如果它看起来没有任何变化,则不会重建包(二进制)——而且它对命令行构建标签的变化不敏感。看到这一点的一种方法是-v在构建包时添加并打印它们:$ go install -v -tags "staging"my/server$ go install -v -tags "production"(no output)您可以通过添加-a标志来强制重建,这往往是矫枉过正:$ go install -a -v -tags "production"my/server...或者在构建之前接触服务器源文件:$ touch main.go$ go install -a -tags "staging"...或在构建之前手动删除二进制文件:$ rm .../bin/server$ go install -a -tags "production"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go