Нет ли оператора XOR для булевых элементов в golang?
Нет ли оператора XOR для булевых в golang?
Я пытался сделать что-то вроде b1^b2
, но он сказал, что он не определен для booleans.
Ответы
Ответ 1
Нет. Go не предоставляет логический оператор исключающего ИЛИ OR (т.е. XOR over booleans) и побитовый оператор XOR только целые числа.
Однако эксклюзивный-ИЛИ можно переписать в терминах других логических операторов. Когда переоценка выражений (X и Y) игнорируется,
X xor Y -> (X || Y) && !(X && Y)
Или, более тривиально, как указал Jsor,
X xor Y <-> X != Y
Ответ 2
С булевыми переменными xor просто:
if boolA != boolB {
}
В этом контексте not equal to
выполняет ту же функцию, что и xor
: оператор может быть прав, только если одно из логических значений истинно, а одно - false.