比较等于true,但当我把它作为条件时,为什么它不被评估为真?

时间:2015-08-30 09:11:53

标签: go

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任何人的解释都将非常感谢!提前谢谢。

1 个答案:

答案 0 :(得分:7)

这是一个1.5版本的错误,看起来与此类似:https://github.com/golang/go/issues/12226

它已在主分支上修复,因此您可以降级到1.4.2并等待下一个版本,或者编译主分支。

编辑:Go1.5.1已发布,它包含此问题的修复程序