Подтвердить что ты не робот

Нет ли оператора XOR для булевых элементов в golang?

Нет ли оператора XOR для булевых в golang?

Я пытался сделать что-то вроде b1^b2, но он сказал, что он не определен для booleans.

4b9b3361

Ответ 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.