はじめに
某サイトのプログラミングスキルチェックで、練習のためgolangで簡単な問題を解いていました。
私は他の言語では、もう…それはもう仕事では出せないような変態的な手法等使って解いたりしていて、それが脳の端でちらつき、不慣れな言語ではどうやってやるのだろうか、と検索をかけたりしています。
問題について
if (/* 式1 */) /*XOR演算子*/ (/* 式2 */) {
// 処理A
} else {
// 処理B
}
問題を解くにあたって、bool
型のXOR演算子を使いたい、と思った場面がありました。
しかし、「golang xor」で検索すると、int
型同士のビット演算ばかりが検索画面に並びます。
ならばと「golang xor bool」で検索しても、XORではない演算子のみが出てきます。
更に調べると……そもそもbool
型に対するXOR演算子など無いことが判明しました。
解決法
しかしよく考えてみれば、XOR演算子ではないものの、同等の役割を持つものがありました。
if (/* 式1 */) != (/* 式2 */) {
// 処理A
} else {
// 処理B
}
それぞれの式がtrue
, false
のときどのような結果になるかを考えれば、たしかにそうだった、と思ったのでした。
最後に
思考が膠着して、簡単な解決法を見落とさないようにしたいものです……。