はじめに
A Tour of 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
}
// 42
// 21
// 73
構造体
ドット( . )を用いてアクセスする
package main
import "fmt"
type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{1, 2}
v.X = 4
fmt.Println(v.X)
}
// 4
・Name:
構文を使って、フィールドの一部だけを列挙することができる
・&
を頭に付けると、新しく割り当てられたstructへのポインタを戻す
package main
import "fmt"
type Vertex struct {
X, Y int
}
var (
v1 = Vertex{1, 2} // has type Vertex
v2 = Vertex{X: 1} // Y:0 is implicit
v3 = Vertex{} // X:0 and Y:0
p = &Vertex{1, 2} // has type *Vertex
)
func main() {
fmt.Println(v1, p, v2, v3)
}
// {1 2} &{1 2} {1 0} {0 0}