※注意: この記事ははあくまで個人学習用に整理しただけの記事で、内容としては不完全なものになります。読んでも参考にならない可能性が高いです。
今まで JavaScript のみをやっていたので、pointer という概念がなかなか入ってこないので一旦整理
Pointer
一旦以下の挙動を確認
package main
import "fmt"
func main() {
i := 1 // i という変数を定義し、1を代入
fmt.Println(i) // 1
p1 := &i // p1 という変数を定義し、& 演算子を使用して i のポインタを格納
fmt.Println(&i) // 0xc0000b6001
fmt.Println(p1) // 0xc0000b6001
fmt.Println(&p1) // 0xc0000b6003
fmt.Println(*p1) // 1
*p1 = 2 // p1 を * 演算子を使用したものに、 2 を格納
fmt.Println(i) // 2
}
上記の流れとしては以下の画像の通りになる
一旦アドレス演算子と間接参照演算子についての挙動は簡単に理解した。