goのポインタは、メモリアドレスを格納する変数です。
【結論】
変数からポインタを取得する場合は変数の前に&をつけます。
【どういうものか】
変数の前に&をつけると変数のメモリを返します。
このような形です。
p = 21 // ポインタpを通してiへ値を代入する
メモリは、1バイト毎に番号がつけられ、区別されています。
0x1040a0d0のように16進数で表示されます。
【具体例】
①
package main
import "fmt"
func main() {
i := 10
p := &i
fmt.Println(p)
}
0xc000016088
②
package main
import "fmt"
func main() {
i := 10
p := &i
*p = 11
fmt.Println(*p)
}
11
【解説】
①
i := 10が格納されたアドレスが0xc000016088です。
pがポインタ変数となりそこに格納されたアドレスが16進数となり出力されます。
②
ポインタ変数は値を入れ替える事もできます。
i := 10をpに格納をして *p = 11で11に入れ替えす。
値を入れ替える時は*pと書きます。
これで11がでます。
かなりざっくりとやりましたがなかなか理解が大変かもしれません。
今後はさらに細かく解説していきます。
取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com