a := "ALL"
b := "not all"
if (a == "ALL") != (b == "ALL") {
fmt.Printf("why not falling into this case?\n")
}
这是我写的一段Go代码,如果a和b只有一个是“ALL”,则打印一些东西。但为什么没有触发fmt.Printf?
但是以下内容确实打印出来:
c := (a == "ALL") != (b == "ALL")
if c {
fmt.Printf("if assign to c, do fall in here\n")
}
但这两件之间的区别是什么?
我还在go操场上粘贴了上述代码:http://play.golang.org/p/e5tNai_d20任何人的解释都将非常感谢!提前谢谢。
答案 0 :(得分:7)
这是一个1.5版本的错误,看起来与此类似:https://github.com/golang/go/issues/12226
它已在主分支上修复,因此您可以降级到1.4.2并等待下一个版本,或者编译主分支。
编辑:Go1.5.1已发布,它包含此问题的修复程序