ポインタ
Go にはポインタがあります。ポインタは値のメモリアドレスを保持します。
*T
型は T
値へのポインタです。そのゼロ値は nil
です。
var p *int
&
演算子はそのオペランドへのポインタを生成します。
i := 42
p = &i
*
演算子はポインタの基になる値を示します。
fmt.Println(*p) // read i through the pointer p
*p = 21 // set i through the pointer p
これは「デリファレンス」または「間接参照」として知られています。
C とは異なり、Go にはポインタ算術がありません。
package main
import "fmt"
func main() {
i, j := 42, 2701
p := &i // point to i
fmt.Println(*p) // read i through the pointer
*p = 21 // set i through the pointer
fmt.Println(i) // see the new value of i
p = &j // point to j
*p = *p / 37 // divide j through the pointer
fmt.Println(j) // see the new value of j
}