⛳
【Go】ポインター
ポインターの理解を深めるために。
str := "test"
pointer := &str
fmt.Println(str) // test
fmt.Println(pointer) // 0xc00002a070
fmt.Println(*pointer) // test
&(アンパサンド)を使用することで、その変数が格納されているメモリの値をゲットする。
*(アスタリスク)を使用することで、ポインターが指し示すメモリに格納されている値をゲットする。
*pointer = "hello"
fmt.Println(str) // hello
fmt.Println(pointer) // 0xc00002a070
上記のように、ポインターに*(アスタリスク)を付与すると、そのメモリに格納されている値を変更することができる。
str2 := str
fmt.Println(&str) // 0xc00002a070
fmt.Println(&str2) // 0xc00002a0b0
strの値を違う変数に渡すときに、そのまま渡すと、新しいメモリにstr内の値を格納するので、メモリが無駄に消費される。
ポインターを使用すると、strの場所を指し示す分だけメモリを使用するので、お得?
Discussion