golang中没有布尔值的XOR运算符吗?

103

在 golang 中,布尔类型没有 XOR 运算符吗?

我想执行 b1^b2 这样的操作,但是它说对于布尔类型未定义。

2个回答

147

16
为什么没有内建的呢?我觉得这很奇怪。 - Charlie Parker
85
虽然你提供的XOR定义是正确的,但我会选择使用x!= y - Linear
3
@Jsor Doh. 我经常错过显而易见的事情 :| 已更新。 - user2864740
20
你可以说 Go 在 bool 类型上有一个异或运算符,它的拼写方式是 != - Keith Thompson
3
直到你需要像boolVar XOR boolFunc()这样的东西,才会出现问题。 - Nikolay Dimitrov

120

使用布尔值进行异或运算很简单:

if boolA != boolB {

}
在这个上下文中,not equal to的作用与xor相同:只有在一个布尔值为真,另一个布尔值为假时,该语句才能为真。

显然,(s == "test") != (s == "not test") 是不起作用的。 - Adonis
4
@Adonis 它有效。当且仅当两个操作数中只有一个为真时,XOR 返回真,并且在您的表达式中始终存在一个 true 和一个 false 结果,而 false != true 为真,这与 false XOR true 相同。 - phuclv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接