我有3个文件。一个和两个额外的~are~应该根据构建约束来构建。两者都从 期间更新全局变量。 是mainnormalgokrazymaininit()normal
// +build !gokrazy
package main
import "fmt"
func init() {
foo = "normal"
fmt.Println("init:", foo)
}
另一个是:gokrazy
// +build gokrazy
package main
import "fmt"
func init() {
foo = "gokrazy"
fmt.Println("init:", foo)
}
go vet *.go很开心。当我运行时,我看到两个初始化函数都被调用:go run *.go
init: gokrazy
init: normal
我以为只有一个人被叫到。 确认选择了预期的文件,但是我仍然看到两个init函数。Golang Build Constraints Random解释说,强制编译可能是必要的,但这不会改变结果:go list
❯ go list -f '{{.GoFiles}}' -tags=gokrazy -a && go run -tags=gokrazy -a *.go
[gokrazy.go main.go]
init: gokrazy
init: normal
为什么负构建标记不起作用?!gokrazy
胡子哥哥
噜噜哒
相关分类