Go言語 変数

GoはGolangとも呼ばれ、Googleが開発した静的型付け並行処理プログラミング言語です。変数は他のプログラミング言語でも基本的な部分であり、Goも例外ではありません。

Go言語 変数の宣言

Goでは、varキーワードを使用して変数を宣言し、その後に変数名、型、値を指定します。

var name string = "John Smith"

Go言語 変数の型推論

変数の宣言時に値がわかっている場合は、データ型を省略することができます。

var name = "John Smith"

Goでは明示的に型を宣言しなくても、初期化された値を元にランタイムが型を推論し、自動的に変数の型を決定します。これを型推論といいます。

Go言語 省略構文

変数に値を代入するときに:=とすることでvarを省略することもできます。

name := "John Smith"

Go言語 複数の変数を宣言

Goでは、一度に複数の変数を宣言することもできます。

name, age := "John Smith", "30"

以下のように、var宣言時にカッコを使い、まとめて書くこともできます。

var (
    userID int = 123
    username string = "johnsmith"
    email string = "johnsmith@example.com"
    firstName string = "John"
    lastName string = "Smith"
    isActive bool = true
    balance float64 = 1000.00
)

fmt.Println("User Information:")
fmt.Println("User ID:", userID)
fmt.Println("Username:", username)
fmt.Println("Email:", email)
fmt.Println("Full Name:", firstName, lastName)
fmt.Println("Is Active:", isActive)
fmt.Println("Balance:", balance)

この例では、ユーザーに関連するいくつかの変数を宣言しています。これらを1つのvar文にまとめることで、どの変数を扱っているのかがわかりやすくなり、コードが読みやすく理解しやすくなります。

例えばテストを記述する際や、大量に変数宣言をする必要がある場合などは、このように書くと非常にコードが見やすくなるので覚えておくと良いでしょう。

Go言語 変数の種類

Goは、以下のようにさまざまなデータ型で変数をサポートしています。

・文字列

var name string = "John Smith"

・整数

var age int = 30

・浮動小数点数

var height float64 = 5.9

・ブーリアン

var isMarried bool = false

・配列

var colors [3]string = [3]string{"red", "green", "blue"}

・スライス

numbers := []int{1, 2, 3, 4, 5}

・マップ

person := map[string]string{"name": "John Smith", "age": "30"}

・構造体

type Person struct {
    Name string
    Age int
}

var john Person = Person{Name: "John Smith", Age: 30}

Go言語 ゼロ値

Goは、値が指定されていない場合、自動的に変数にデフォルト値を割り当てます。このデフォルト値はゼロ値と呼ばれ、変数の種類によって異なります。例えば、文字列のゼロ値は空文字列で、整数のゼロ値は0です。以下は、ゼロ値を持つ変数の例です。

var email string
fmt.Println(email) // ""

var age int
fmt.Println(age) // 0

Go言語 変数のスコープ

変数のスコープとは、その変数がコード内のどこにアクセスできるかを決めるものです。Goでは、グローバルとローカルの2種類のスコープがあります。グローバル変数はコードのどこからでもアクセスできますが、ローカル変数は宣言されたコードのブロックの中だけでアクセスできます。

以下は、グローバル変数の例です。

var name string = "John Smith"

func main() {
    fmt.Println(name)
}

以下は、ローカル変数の例です。

func main() {
    var name string = "John Smith"
    fmt.Println(name)
}

この例では、変数nameはmain関数内でのみアクセス可能であり、main関数の外からアクセスしようとするとエラーになります。

Go言語 ポインタ

Goはポインタもサポートしています。ポインタは、他の変数のメモリアドレスを格納する変数です。ポインタを使うと、変数の値を渡す代わりに、参照で渡すことができます。

func main() {
    name := "John Smith"
    ptr := &name
    fmt.Println(*ptr)
}

この例では、変数ptrは変数nameのメモリアドレスを格納するポインタです。演算子&で変数のメモリアドレスを取得し、*演算子でそのメモリアドレスに格納されている値にアクセスすることができます。

この記事を書いた人

著者の画像

Jeffry Alvarado

Ex-Facebook Engineer 大学ではコンピュータサイエンスを専攻し、在学中に複数のインターンシップを経験。コンピュータサイエンスが学習できるプラットフォームRecursionを創業し、CTOとしてカリキュラム作成、ソフトウェア開発を担当。


ツイート