【发布时间】:2022-04-13 23:40:09
【问题描述】:
golang 中的布尔值没有异或运算符吗?
我试图做类似b1^b2 的事情,但它说它不是为布尔值定义的。
【问题讨论】:
标签: go operators logical-operators xor
golang 中的布尔值没有异或运算符吗?
我试图做类似b1^b2 的事情,但它说它不是为布尔值定义的。
【问题讨论】:
标签: go operators logical-operators xor
没有。 Go 确实不提供a logical 异或运算符(即布尔值的异或),the bitwise XOR operator 仅适用于整数。
但是,an exclusive-OR 可以用其他逻辑运算符重写。当忽略表达式(X 和 Y)的重新计算时,
X xor Y -> (X || Y) && !(X && Y)
或者,正如 Jsor 指出的那样,更琐碎,
X xor Y <-> X != Y
【讨论】:
x != y
bool的异或运算符,它的拼写是!=。
boolVar XOR boolFunc()之类的东西
对于布尔值,xor 很简单:
if boolA != boolB {
}
在这种情况下,not equal to 执行与xor 相同的功能:只有当布尔值之一为真且一个为假时,该语句才能为真。
【讨论】:
(s == "test") != ( s == "not test") 不起作用
false != true 为真,这与false XOR true 相同