🤔

【Golang】ポインタについて超簡単に説明

に公開

はじめに

超初心者がふわっと理解できるようにするための説明なので正確には説明していません。
最近Goを触り始めたため、備忘もこめて自分が理解しやすかった考え方を共有します。

ポインタとは

「&」「*」 を使用して変数や構造体のフィールドの住所(メモリ上におけるアドレス)や値を取得できる。
ここでは構造体の話は省きますが、考え方は同じです。
&:アドレスを取得する時に使用
*:アドレスであることを明示する時やアドレスが格納された変数に対して実態を参照しに行く時に使用

実際に確認

var test int = 10
fmt.Println(test)

これは10が表示されます。

var test int = 10
fmt.Println(test)
fmt.Println(&test) //追加

変数testに&をつけてアドレスを取得。
追加した部分の出力をみると変数testのアドレスが表示されます。

var test int = 10
fmt.Println(test)
fmt.Println(&test)

var testPointer *int = &test //追加
fmt.Println(testPointer) //追加
fmt.Println(*testPointer) //追加

testのアドレスをtestPointer変数に格納。
👆(ポインタとは)での説明の通り、int型の値のアドレスが入ることを明示するので型に * をつける(*int)
testPointer変数にはポインタが格納されているので、実態をみるには * をつける。
出力をみると1個目はアドレスが表示され、2個目は実態が表示されます。

Discussion