Go - オペレータ:プログラミングの魔法のガイド

こんにちは、未来のコード魔術師たち!今日は、Goオペレータの不思議な世界に潜り込みます。これまでに一行のコードを書いたことがない人も心配しないでください。この魔法の旅であなたの信頼できるガイドとして導いていきます。このチュートリアルの終わりまでに、プロのようにオペレータを使えるようになるでしょう!

Go - Operators

オペレータとは?

まず、オペレータが実際に何かについて話しましょう。オペレータはプログラミングの魔法の杖と考えてください。データに操作を加え、値を比較し、コード内で決定を行うことができます。料理人がさまざまな調理器具を使って美味しい料理を作るように、私たちはさまざまなオペレータを使って素晴らしいプログラムを作成します!

算術オペレータ:数学の魔術師

まずは馴染みのあるものから始めましょう – 数学!Goの算術オペレータは、学校で学んだ基本的な数学的操作と同じように動作します。以下にこれらの数学的な驚異の表を示します:

オペレータ 説明
+ 加算 5 + 3 = 8
- 減算 10 - 4 = 6
* 掛け算 3 * 4 = 12
/ 除算 15 / 3 = 5
% 剰余 17 % 5 = 2

これらを動作させる簡単なプログラムを見てみましょう:

package main

import "fmt"

func main() {
a := 10
b := 3

fmt.Println("加算:", a + b)
fmt.Println("減算:", a - b)
fmt.Println("掛け算:", a * b)
fmt.Println("除算:", a / b)
fmt.Println("剰余:", a % b)
}

このプログラムを実行すると以下のようになります:

加算: 13
減算: 7
掛け算: 30
除算: 3
剰余: 1

素晴らしいですね!たった数行のコードで全ての基本的な数学操作を行いました!

関係オペレータ:比較の騎士

次は関係オペレータです。これらは才能ショーの審査員のように、2つの値を比較して、比較が真か偽かを決定します。以下に比較の騎士たちのリストを示します:

オペレータ 説明
== 等しい 5 == 5 is true
!= 等しくない 5 != 3 is true
> 大きい 7 > 3 is true
< 小さい 2 < 8 is true
>= 大きいまたは等しい 5 >= 5 is true
<= 小さいまたは等しい 4 <= 4 is true

これらを動作させるプログラムを見てみましょう:

package main

import "fmt"

func main() {
x := 5
y := 10

fmt.Println("x は y と等しい?", x == y)
fmt.Println("x は y と等しくない?", x != y)
fmt.Println("x は y より大きい?", x > y)
fmt.Println("x は y より小さい?", x < y)
fmt.Println("x は y より大きいか等しい?", x >= y)
fmt.Println("x は y より小さいか等しい?", x <= y)
}

実行すると以下のようになります:

x は y と等しい? false
x は y と等しくない? true
x は y より大きい? false
x は y より小さい? true
x は y より大きいか等しい? false
x は y より小さいか等しい? true

各比較は真または偽の結果を返します。関係オペレータの力です!

論理オペレータ:決定の賢者

論理オペレータは、私たちのプログラミング村の賢者のように、複数の条件を結合して複雑な決定を行います。以下に論理の明星たちを紹介します:

オペレータ 説明
&& AND true && false = false
|| OR true || false = true
! NOT !true = false

これらを動作させるプログラムを見てみましょう:

package main

import "fmt"

func main() {
isSunny := true
isWarm := false

fmt.Println("晴れていて暖かい?", isSunny && isWarm)
fmt.Println("晴れているか暖かい?", isSunny || isWarm)
fmt.Println("晴れていない?", !isSunny)
}

これの出力は以下の通りです:

晴れていて暖かい? false
晴れているか暖かい? true
晴れていない? false

これらのオペレータは、プログラム内で決定を行うのに非常に強力です。まるでコードの脳のような存在です!

ビットwiseオペレータ:2進法の仲間

今度は2進法の魔法の領域に踏み込みます。ビットwiseオペレータは、数の2進表現を直接操作します。これらは少し高度ですが、知っておくと非常に便利です!以下に2進法の仲間たちを紹介します:

オペレータ 説明
& ビットwise AND
| ビットwise OR
^ ビットwise XOR
<< 左シフト
>> 右シフト

以下に簡単な例を見てみましょう:

package main

import "fmt"

func main() {
a := 5  // 2進法: 101
b := 3  // 2進法: 011

fmt.Printf("a & b = %d\n", a & b)
fmt.Printf("a | b = %d\n", a | b)
fmt.Printf("a ^ b = %d\n", a ^ b)
fmt.Printf("a << 1 = %d\n", a << 1)
fmt.Printf("b >> 1 = %d\n", b >> 1)
}

これの出力は以下の通りです:

a & b = 1
a | b = 7
a ^ b = 6
a << 1 = 10
b >> 1 = 1

最初は少し難しいように思えるかもしれませんが、ビットwise操作は新しい言語を学ぶのと同じで、時間と練習が必要です!

賦値オペレータ:値の設定者

賦値オペレータは、私たちのコードの助手的存在で、値を迅速に割り当てまたは更新します。以下に値の設定者たちを紹介します:

オペレータ 説明
= 単純賦値 x = 5
+= 加算賦値 x += 3 is the same as x = x + 3
-= 減算賦値 x -= 2 is the same as x = x - 2
*= 掛け算賦値 x = 4 is the same as x = x 4
/= 除算賦値 x /= 2 is the same as x = x / 2
%= 剰余賦値 x %= 3 is the same as x = x % 3

これらを動作させるプログラムを見てみましょう:

package main

import "fmt"

func main() {
x := 10

fmt.Println("初期の x:", x)

x += 5
fmt.Println("x += 5 後:", x)

x -= 3
fmt.Println("x -= 3 後:", x)

x *= 2
fmt.Println("x *= 2 後:", x)

x /= 4
fmt.Println("x /= 4 後:", x)

x %= 3
fmt.Println("x %= 3 後:", x)
}

これの出力は以下の通りです:

初期の x: 10
x += 5 後: 15
x -= 3 後: 12
x *= 2 後: 24
x /= 4 後: 6
x %= 3 後: 0

これらのオペレータは、コードをよりクリーンで効率的にするための素晴らしいショートカットです!

その他のオペレータ:ユニークなユニコーン

Goには、他のカテゴリに当てはまらない特別なオペレータもあります。これらのユニークなユニコーンは以下の通りです:

オペレータ 説明
& アドレス
* ポインタ
<- 受信オペレータ

これらはより高度な概念で、今後のレッスンで詳しく説明します。今は、これらが存在し、あなたがその魔法を発見するのを待っていることを知っておいてください!

オペレータの優先順位:権力の階層

数学と同様に、Goも操作を行う特定の順序を持っています。これをオペレータの優先順位と呼びます。以下にGoのオペレータの優先順位の簡略版を示します。最も高い優先順位から最も低い優先順位までです:

  1. 括弧 ()
  2. 単項オペレータ (!, -, +, &, *, <-)
  3. 掛け算、除算、剰余 (*, /, %)
  4. 加算、減算 (+, -)
  5. 比較オペレータ (==, !=, <, <=, >, >=)
  6. 論理AND (&&)
  7. 論理OR (||)
  8. 賦値オペレータ (=, +=, -=, *=, /=, %=)

わからない場合は、括弧を使って意図を明確にしましょう!

そして、あなたたち若いコードの弟子たち!私たちはGoオペレータの土地を旅しました。馴染みのある算術オペレータから不思議なビットwiseオペレータまでです。プロのようにこれらのオペレータを使えるようになるには練習が必要です。すぐに全てが理解できるとは限りませんが、コードを書き続け、実験を続けると、すぐにGoの魔術師のようにプログラミングの呪文を唱えられるようになるでしょう!

Credits: Image by storyset