Goの構造体をポインタで操作する
Goの構造体はポインタで参照・代入ができる。
Goの構造体からポインタを取り出し、ポインタを利用して値を代入する
package main import "fmt" // 構造体の定義 type Temp struct { X int Y int } func main () { // 構造体の初期化 a := Temp{1, 2} p := &a p.X = 100 fmt.Println(a) // -> {100, 2} // ポインタで代入した場合も、元の構造体が変更されている fmt.Println(*p) // -> {100, 2} // もちろんポインタが指し示す内容も元の構造体と等しくなる }
構造体を初期化する。※ただし、値は一部だけ指定したい
構造体を初期化する場合、プロパティの値を指定する時はすべてを列挙しないとエラーになる
package main import "fmt" type Temp struct { X int Y int Z int } func main () { a := Temp{1} fmt.Println(a) // -> too few values in Vertex literal }
エラーを回避するために、hoge: 構文を使用する。
指定されたプロパティのみ値が代入される。
他のプロパティはデフォルト値が適用される。
package main import "fmt" type Temp struct { X int Y int Z int } func main () { b := Temp{Y: 5} fmt.Println(b) // -> {0, 5, 0} }
参考:
A Tour of Go