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