varの概要
変数の宣言 Goの予約語 | ||
var 概要 |
||
|
基本的な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: 変数を宣言したが初期化しなかった場合、自動的にゼロ値が設定されます。(例:
int
は0
、string
は""
、bool
はfalse
) - Q: 関数外で:=は使えますか?
- A: いいえ。短縮宣言
:=
は関数内でしか使用できません。関数外ではvar
を使う必要があります。
まとめ
var
を使うと、明示的に変数を宣言できる。- 型を省略すると、Goが自動的に型を推論する。
- 初期値を指定しない場合は、その型のゼロ値が設定される。
- 複数の変数をまとめて宣言することができる。
- グローバル変数は関数外で
var
を使って定義する。 - 未使用の変数はコンパイルエラーになるため注意が必要。