为了账号安全,请及时绑定邮箱和手机立即绑定

负构建标记未按预期工作

负构建标记未按预期工作

Go
犯罪嫌疑人X 2022-08-01 16:44:03
我有3个文件。一个和两个额外的~are~应该根据构建约束来构建。两者都从 期间更新全局变量。 是mainnormalgokrazymaininit()normal// +build !gokrazypackage mainimport "fmt"func init() {    foo = "normal"    fmt.Println("init:", foo)}另一个是:gokrazy// +build gokrazypackage mainimport "fmt"func init() {    foo = "gokrazy"    fmt.Println("init:", foo)}go vet *.go很开心。当我运行时,我看到两个初始化函数都被调用:go run *.goinit: gokrazyinit: 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: gokrazyinit: normal为什么负构建标记不起作用?!gokrazy
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

如果你使用,Go实际上会运行所有文件。请改用:go run *.go

go run .

例如,如果您在文件夹中有一个测试文件()并使用 ,它会抱怨:main_test.gogo run *.go

go run: 無法運行 *_test.go files (main_test.go)


查看完整回答
反对 回复 2022-08-01
?
噜噜哒

TA贡献1784条经验 获得超7个赞

构建标记修改构建的内容(顾名思义)。

构建标签基本上被忽略了,你无论如何都不应该使用它(它太复杂了,除非go rungo run .)

用。go build


查看完整回答
反对 回复 2022-08-01
  • 2 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信