Go 言語の算術演算子
目次
Go の算術演算子
Go の基本的な算術演算子
Go の基本的な算術演算子は次の表の通りです。
演算子 | 説明 | 例 |
---|---|---|
+ | 加算 | 1 + 2 = 3 |
- | 減算 | 3 - 1 = 2 |
* | 乗算 | 2 * 3 = 6 |
/ | 除算 | 6 / 2 = 3 |
% | 剰余 | 10 % 4 = 2 |
符号を表す単項演算子 +, -
プラスやマイナスの符号を表す単項演算子として + や - が使えます。 例えば -3 + 5 の結果は 2 になります。
Go の整数型の演算子
割り算での切り捨て
整数型での演算では、特に除算で注意が必要です。
整数値同士の除算では、小数点以下は切り捨てられます。従って、 10/3 の計算結果は 3 になります。
fmt.Println(10 / 3) // 3
NOT 演算単項演算子 ^
^ 単項演算子はビットの NOT演算 (1 と 0 をフリップ) になります。
var x uint8 = 3
var y int8 = 3
fmt.Println(^x) // 252
fmt.Println(^y) // -4
ビット演算は整数型に対してのみ行われます。浮動小数点型などには適用できません。
Go のビット演算
整数型に対するビット演算子は次の表の通りです。
ビット演算子 | 意味 | 例 |
---|---|---|
& | AND ビット毎に比較し両方とも 1 の箇所のみ 1 |
0b1010 & 0b1100 → 0b1000 |
| | OR ビット毎に比較し片方でも1の箇所が1 |
0b1010 | 0b1100 → 0b1110 |
^ | XOR ビット毎に比較し片方が1の箇所が1 |
0b1010 ^ 0b1100 → 0b0110 |
&^ | AND NOT NOT との AND 演算。 自身との &^ 演算でビットがクリアされる |
0b1100 &^ 0b1100 → 0b0000 |
<< | 左シフト | 0b0001 << 2 → 0b0100 |
>> | 右シフト | 0b1000 >> 1 → 0b0100 |
Go の文字列型変数の演算
文字列型 string に対して + 演算を行うと、文字列を結合します。
a := "Hello"
b := "world!"
s := a + ", " + b // Hello, world!
Go の算術演算と代入
Go で演算の結果を代入する演算子
Go で演算を行った結果を代入する演算子として、以下が使えます。
演算子 | 説明 | 例 | 等価の演算 |
---|---|---|---|
+= | 加算の結果を代入 | a += b | a = (a + b) |
-= | 減算の結果を代入 | a -= b | a = (a - b) |
*= | 乗算の結果を代入 | a *= b | a = (a * b) |
/= | 除算の結果を代入 | a /= b | a = (a/b) |
%= | 剰余を代入 | a %= b | a = (a % b) |
++ | インクリメント (+1) | a++ | a += 1 |
-- | デクリメント (-1) | a-- | a -= 1 |
Go ではインクリメントとデクリメントは文
C言語などと異なり、Go ではインクリメント ++ とデクリメント -- は式 (expression) ではなく文 (statement) です。
「式」は評価された結果の「値」をもちます。「文」は「手続き」のことを表します。
次のコードはシンタックスエラーが発生し、コンパイルできません。
a := 2
fmt.Println(a++) // エラー
以上、ここでは Go の算術演算について説明しました。