Go - 変数:プログラミングの魔法の扉

こんにちは、将来のコード魔術師たち!Goプログラミングの世界への興奮的な旅にあなた们的案内者として参加できてとても嬉しいです。今日は、変数の魔法の領域に飛び込みます - 任何のプログラムの基本単位です。さあ、あなた们的杖(キーボード)を握りしめ、コードの呪文を唱えましょう!

Go - Variables

変数とは何者ぞ?

Goの詳細に入る前に、変数とは何かを理解するために少し時間を取ります。プログラミングでは、変数は箱のようなものです。箱にはさまざまなものを収納できます。このデータは数値、テキスト、またはさらに複雑な情報でも構いません。変数の素晴らしいところは、箱の中身を変更できる(その名の通り「変数」)ことと、プログラムのさまざまな部分で中身を使えることです。

さあ、Goがこれらの魔法の容器をどのように扱うかを見てみましょう!

Goでの変数定義

Goでは、変数を定義するのはデータのためのラベル付きの箱を作るようなものです。いくつかの方法がありますが、まず最も基本的な方法から始めます:

var name string = "Gopher"

これを分解してみましょう:

  • var:このキーワードはGoに変数を宣言していることを伝えます。
  • name:これは私たちの変数の名前(箱のラベル)です。
  • string:これは変数が保持するデータの種類(この場合はテキスト)です。
  • "Gopher":これは実際に変数に格納される値です。

これを「Hey Go, I want a box labeled 'name' that can hold text, and I want to put 'Gopher' in it right now.»(こんにちはGo、テキストを保持できる『name』というラベルの箱を作り、『Gopher』を中に入れたい。)というように考えると良いでしょう。

Goでの静的型宣言

静的型宣言は、何かを箱に入れる前にどのような箱が必要かをGoに明確に伝える方法です。これは変数が保持するデータについて非常に具体的にする方法です。以下にいくつかの例を示します:

var age int
var height float64
var isStudent bool

これらの例では、変数を作成していますが、まだ何も入れていません。私たちはただ、保持するデータの種類を伝えています:

  • ageは整数(whole numbers)を保持します。
  • heightは浮動小数点数(decimal numbers)を保持します。
  • isStudentは真偽値(true/false values)を保持します。

これを「I need a box for whole numbers, one for decimal numbers, and one for yes/no answers.»(整数用の箱、浮動小数点数用の箱、そしてはい/いいえの答え用の箱が必要だ。)というように考えると良いでしょう。

Goでの動的型宣言/型推論

さあ、ここでGoが非常に素晴らしいことをするところです。Goは、何かを箱に入れる前にそのデータを見て、どのような箱が必要かを判断することができます。これを型推論と呼びます。以下を見てみましょう:

name := "Gopher"
age := 25
height := 5.9
isStudent := true

これらの例では、:=演算子を使用しています。これはGoに「Hey, create a new variable and figure out what type it should be based on what I'm putting in it.»(こんにちは、新しい変数を作成し、私が入れるものに基づいてどの型にするべきかを判断してください。)ということを伝えます。Goは以下のように判断します:

  • "Gopher"nameがstringであることを意味します。
  • 25ageがintであることを意味します。
  • 5.9heightがfloat64であることを意味します。
  • trueisStudentがboolであることを意味します。

これを「It's like magic - Go creates the right kind of box for each piece of data automatically!»(魔法のように、Goは各データに適した箱を自動的に作成します!)というように考えると良いでしょう。

Goでの複合変数宣言

時々、複数の変数を一度に作成したい場合があります。Goはこれをきれいで整理された方法で行うことができます:

var (
name string = "Gopher"
age int = 25
height float64 = 5.9
isStudent bool = true
)

これは「I'm setting up a whole shelf of labeled boxes all at once.»(一度にラベル付きの箱をたくさん設置している。)というように考えると良いでしょう。関連する変数を一緒に保ち、コードを整理整頓するのに役立ちます。

lvaluesとrvaluesについて

さあ、もう少し高度な話題に進みましょう:lvaluesとrvalues。心配しないでください、それほど恐ろしいものではありません!

  • lvalue(左値)は、代入の左側に現れるものです。これは箱のラベルのようなものです。
  • rvalue(右値)は、代入の右側に現れるものです。これは箱に入れるものです。

以下に例を示します:

name := "Gopher"  // nameはlvalue、 "Gopher"はrvalue
age := 25         // ageはlvalue、 25はrvalue

このように考えると良いでしょう:lvalueは何かを収納する場所のアドレスであり、rvalueは収納するものです。

すべてをまとめて

さあ、学んだことをすべてまとめた楽しいプログラムを見てみましょう:

package main

import "fmt"

func main() {
// 静的型宣言
var greeting string

// 動的型宣言
name := "Gopher"

// greetingに値を代入
greeting = "Hello"

// 変数を使用
fmt.Println(greeting + ", " + name + "!")

// 複合宣言
var (
age int = 25
height float64 = 5.9
isStudent bool = true
)

// 変数を使用
fmt.Printf("%s is %d years old, %.1f feet tall, and it's %t that they're a student.",
name, age, height, isStudent)
}

このプログラムは以下のように出力します:

Hello, Gopher!
Gopher is 25 years old, 5.9 feet tall, and it's true that they're a student.

それでは、あなたは刚刚Goの最初の呪文を唱えたのです。練習すれば完璧になりますので、さまざまな型の変数を試してみてください。あなたがGoプログラミングの魔術師になるまで、まだ時間はかかります。練習を続け、好奇心を持ち、そして最も重要なのは、コードを楽しみましょう!

Credits: Image by storyset