Go言語のvarを使って変数を宣言し、活用する方法についてわかりやすく解説

スポンサーリンク
スポンサーリンク

varの概要

変数の宣言 Goの予約語

var

概要varは、Goで変数を宣言するためのキーワードです。型を明示することも、省略することもできます。

  • 変数を明示的に宣言できる。
  • 型を指定することで、可読性と安全性を向上できる。
  • 初期値を省略すると、その型のゼロ値が代入される。
  • 関数外で使用すると、グローバル変数として動作する。

基本的なvarの使い方

varを使って、整数型の変数を宣言する例です。

package main

import "fmt"

func main() {
    var x int = 10
    fmt.Println("変数xの値:", x)
}

解説:

  • var x int = 10 で整数型の変数xを宣言し、値を代入。
  • fmt.Println で変数の値を出力。

実行結果:

変数xの値: 10

型を省略したvar宣言

型を省略すると、初期値から型が自動推論されます。

package main

import "fmt"

func main() {
    var message = "Hello, Go!"
    fmt.Println(message)
}

解説:

  • var message = "Hello, Go!" のように型を省略すると、string型として推論される。
  • 明示的に型を指定する必要がないため、コードが簡潔になる。

実行結果:

Hello, Go!

ゼロ値の確認

変数を宣言しただけで初期値を設定しない場合、その型の「ゼロ値」が自動的に代入されます。

package main

import "fmt"

func main() {
    var i int
    var s string
    var f float64
    var b bool

    fmt.Println("intのゼロ値:", i)
    fmt.Println("stringのゼロ値:", s)
    fmt.Println("float64のゼロ値:", f)
    fmt.Println("boolのゼロ値:", b)
}

解説:

  • 整数(int)のゼロ値は0
  • 文字列(string)のゼロ値は空文字("")。
  • 浮動小数点数(float64)のゼロ値は0.0
  • ブーリアン(bool)のゼロ値はfalse

実行結果:

intのゼロ値: 0
stringのゼロ値: 
float64のゼロ値: 0
boolのゼロ値: false

複数の変数をまとめて宣言

複数の変数をvarブロックを使って一度に宣言できます。

package main

import "fmt"

func main() {
    var (
        name  = "太郎"
        age   = 25
        score float64 = 89.5
    )

    fmt.Println("名前:", name)
    fmt.Println("年齢:", age)
    fmt.Println("スコア:", score)
}

解説:

  • var ( ... ) を使うと、複数の変数を整理して定義できる。
  • 異なる型の変数をまとめて宣言可能。

実行結果:

名前: 太郎
年齢: 25
スコア: 89.5

関数外で宣言するグローバル変数

varを関数外で使うと、グローバル変数として定義できます。

package main

import "fmt"

var globalVar = "これはグローバル変数です"

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

解説:

  • varを関数外で使うと、パッケージ全体で有効な変数になる。
  • グローバル変数は可読性を下げる可能性があるため、多用は避けるべき。

実行結果:

これはグローバル変数です

注意事項

  • 未使用の変数はエラー: Goでは宣言した変数を使わないとコンパイルエラーになる。
  • 明示的な型指定は可読性を向上: 型推論を活用するのもよいが、明示するとコードが理解しやすくなる。
  • グローバル変数は多用しない: 意図しない変更を避けるため、できるだけ関数内で変数を管理する。

よくある質問

Q: varと:=(短縮変数宣言)の違いは?
A: varは関数内外で使用でき、型指定が可能。一方、:=は関数内でのみ使用でき、型推論される。
Q: 変数の型を途中で変更できますか?
A: いいえ。Goは静的型付け言語のため、一度決めた型を変更することはできません。型を変更する場合は型変換が必要です。
Q: 未使用の変数があるとコンパイルエラーになるのはなぜ?
A: Goは不要なコードを減らし、クリーンなプログラムを書くことを推奨しているため、未使用の変数があるとコンパイルエラーになります。
Q: ゼロ値が設定されるのはどのような場合ですか?
A: 変数を宣言したが初期化しなかった場合、自動的にゼロ値が設定されます。(例: int0string""boolfalse
Q: 関数外で:=は使えますか?
A: いいえ。短縮宣言:=は関数内でしか使用できません。関数外ではvarを使う必要があります。

まとめ

  • varを使うと、明示的に変数を宣言できる。
  • 型を省略すると、Goが自動的に型を推論する。
  • 初期値を指定しない場合は、その型のゼロ値が設定される。
  • 複数の変数をまとめて宣言することができる。
  • グローバル変数は関数外でvarを使って定義する。
  • 未使用の変数はコンパイルエラーになるため注意が必要。