在 golang 中,布尔类型没有 XOR 运算符吗?
我想执行 b1^b2
这样的操作,但是它说对于布尔类型未定义。
在 golang 中,布尔类型没有 XOR 运算符吗?
我想执行 b1^b2
这样的操作,但是它说对于布尔类型未定义。
没有。Go语言不提供逻辑上的异或(即布尔型变量的异或),按位异或操作只适用于整数。
但是,可以使用其他逻辑运算符重写异或运算。当忽略表达式(X和Y)的重新评估时,
X xor Y -> (X || Y) && !(X && Y)
或者,如Jsor所指出的那样,更琐碎地说,
X xor Y <-> X != Y
使用布尔值进行异或运算很简单:
if boolA != boolB {
}
在这个上下文中,not equal to
的作用与xor
相同:只有在一个布尔值为真,另一个布尔值为假时,该语句才能为真。(s == "test") != (s == "not test")
是不起作用的。 - Adonisfalse != true
为真,这与 false XOR true
相同。 - phuclv
x!= y
。 - Linearbool
类型上有一个异或运算符,它的拼写方式是!=
。 - Keith ThompsonboolVar XOR boolFunc()
这样的东西,才会出现问题。 - Nikolay Dimitrov