導入
「名前・年齢・住所」のように、関係する複数の値を1つのまとまりとして扱いたいことがあります。そのための型を自分で定義するのが 構造体(struct) です。
説明
package main
import "fmt"
// User という新しい型を定義する
type User struct {
Name string
Age int
}
func main() {
u := User{Name: "田中", Age: 30}
fmt.Println(u.Name) // 田中
fmt.Println(u.Age) // 30
u.Age = 31 // フィールドを書き換える
fmt.Println(u) // {田中 31}
}
type User struct { ... }…Userという新しい型を定義。NameとAgeを フィールド と呼びます。User{Name: "田中", Age: 30}… フィールド名を指定して値を作ります。u.Name….(ドット)でフィールドにアクセスします。
前章でマップの並びで表したデータも、構造体なら「どんなフィールドがあるか」が型として決まるので、打ち間違い("nmae" など)をコンパイラが防いでくれます。
やってみよう
User に City string フィールドを足すと、User{Name: "田中", Age: 30, City: "東京"} のように住所も持てます。マップと違い、どんな項目を持つかが型で決まっているのが構造体の安心なところです。