a := "ALL"
b := "not all"
if (a == "ALL") != (b == "ALL") {
fmt.Printf("why not falling into this case?\n")
}
Here is a piece of Go code I wrote, to print something if a and b have exactly one to be "ALL". But why the fmt.Printf is not triggered?
However the following does print:
c := (a == "ALL") != (b == "ALL")
if c {
fmt.Printf("if assign to c, do fall in here\n")
}
But what's the difference between the two pieces?
I also pasted the above code in the go playground: http://play.golang.org/p/e5tNai_d20 Anyone's explanation will be greatly appreciated! Thanks in advance.
It is a go 1.5 bug, and looks similiar to this one : https://github.com/golang/go/issues/12226
It is fixed on the master branch, so you can either downgrade to 1.4.2 and wait for the next release, or compile the tip of master.
Edit : Go1.5.1 has been released and it contains the fix to this issue
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With