Go ポインタの初歩
概要
ポインタと聞いただけで避けてきた部分があるので初歩から振り返る
書籍 入門GoプログラミングのLESSON 26を復習
&と*記号
& について
アドレス演算子(&)は、その値の メモリアドレス を示す
テストコード
変数children
に&
をつけて表示
|
|
実行結果
メモリアドレスが表示される
0xc0000101e0
* について
メモリアドレスで 参照される値 を求める
&
の反対で デリファレンス(逆参照) と呼ばれる
テストコード
|
|
実行結果
そのままだと、そのままだからメモリアドレスが表示される
*
付けた方はメモリアドレスにある値を参照したのでAsuka
が表示される
0xc0000101e0
Asuka
補足
*&children
とやると…
|
|
実行結果
*&
でもデリファレンスされる
0xc0000101e0
Asuka
ポイントの型
string
で定義したchildren
のメモリアドレスを格納したchildrenAddress
を探る
型の前に*
のついた型になる
テストコード
childrenAddress
の型を表示する
|
|
実行結果
*string
というstring
の前に*
がついたポインタ型
型は *string
*の紛らわしいところ
変数 の前に*
をつけると、メモリアドレスにある値を参照する
アドレス番地ではない値が表示される
型 の前に*
をつけると、ポイント型でメモリアドレスが入る
アドレス番地が表示される(nilの場合もある)
感想
最初はポインタと聞いただけで恐れていたけど、使ってるうちに感覚でわかるようになってた
深く理解していないだけど…
参考
入門Goプログラミング