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