Go 変数
Goにおけるすべての変数は型を備える。
- 値型
- 参照型
- ポインタ型
値型は整数、実数といった値そのものを格納する。 参照型はスライス、マップ、チャネルのいずれかのデータ構造。 ポインタ型は値や関数といったメモリ上の実態を、アドレス値によって間接的に表現するもの。
明示的な定義
var n int var x, y, z int var ( x, y int z string )
上記のように予約語 var , 変数名、型名の順に定義する。
異なる型や個数が違うものを代入しようとするとコンパイルエラーが発生する。
暗黙的な定義
型推論を用いて以下のように定義することができる
a := true b := 1 c := 3.14
など
関数の戻り値を利用することもできる。
func one() { return 1 } n := one()
変数の暗黙的な定義を利用した代入は1回しか許されない。
n := 1 n := 3
nに対する2回目の代入でコンパイルエラーが発生する。
演算子 := はあくまで変数を定義するための機能であり、変数への代入を実行しているものだとイメージしてはいけない。 型指定の省略や、まとめて初期値を代入できるメリットは副次的なものである。
演算子 = は再代入の制限がないため、変数への再代入には演算子 = を使う。
var a int a = 1 a = 2 b := 1 b = 2