英文:
Is there no XOR operator for booleans in golang?
问题
在Go语言中,没有专门用于布尔类型的异或(XOR)运算符。你无法直接使用b1^b2
这样的语法进行异或运算,因为Go语言中的布尔类型不支持该操作。
英文:
Is there no XOR operator for booleans in golang?
I was trying to do something like b1^b2
but it said it wasn't defined for booleans.
答案1
得分: 143
没有。Go语言没有提供逻辑异或运算符(即布尔型的异或运算),而位异或运算符只适用于整数。
然而,可以使用其他逻辑运算符来重写异或运算。当忽略表达式(X和Y)的重新评估时,
X xor Y -> (X || Y) && !(X && Y)
或者,更简单地如Jsor指出的那样,
X xor Y <-> X != Y
英文:
There is not. Go does not provide a logical exclusive-OR operator (i.e. XOR over booleans) and the bitwise XOR operator applies only to integers.
However, an exclusive-OR can be rewritten in terms of other logical operators. When re-evaluation of the expressions (X and Y) is ignored,
X xor Y -> (X || Y) && !(X && Y)
Or, more trivially as Jsor pointed out,
X xor Y <-> X != Y
答案2
得分: 119
使用布尔值时,异或操作可以简单地表示为:
if boolA != boolB {
}
在这个上下文中,"不等于"的操作与"异或"的功能相同:只有当一个布尔值为真,另一个布尔值为假时,该语句才会为真。
英文:
With booleans an xor is simply:
if boolA != boolB {
}
In this context not equal to
performs the same function as xor
: the statement can only be true if one of the booleans is true and one is false.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论