go言語にはポインタがあります。
ポインタはC言語などにもありますが初めて扱う人だとなかなかイメージしにくいです。
そのポインタを解説します。
【結論】
ポインタはメモリを格納するものでvar p *intにコードを書きます。
ポインタにはポインタ変数、ポインタ型、ポインタ値がある。
【理由】
ポインタは3つの機能の総称です。
・ポインタ型
アドレスを記憶するものです。
int型やstring型です。
・ポインタ変数
ポインタ型で宣言された変数です。
・ポインタ値
ポインタ変数が記憶できる値です。
package main
import "fmt"
func main() {
var p *int
if p == nil {
fmt.Println("p is nil")
} else {
fmt.Println("p is not nil")
}
// p is nil
}
このコードだとintがポインタ型、p がポインタ変数、p is nilがポインタ値になります
【具体例】
package main
import "fmt"
func main() {
i, j := 42, 2701
p := &i // point to i
fmt.Println(*p) // read i through the pointer