構造体の中に構造体を埋め込む方法
構造体の中で構造体を埋め込む(構造体の中で別の構造体を使う)には、構造体内のフィールドに別の構造体を型として指定すればOKです。
例えば、以下の二つの構造体があった時、
type 構造体A struct {
}
type 構造体B struct {
}
構造体Aのフィールドの1つを構造体B型にしてあげれば、構造体Aの中に構造体Bを埋め込むことができます。
type 構造体A struct {
フィールド名 構造体B // 構造体Aのフィールドの1つを構造体B型にする
}
type 構造体B struct {
}
構造体に埋め込む具体的なコード例
以下のコードはUser型(構造体)を作成し、そのUser型の中でProfileというフィールドを設け、Profileフィールドの型をProfile型(構造体)にする例となってます。
package main
import (
"fmt"
)
type User struct {
Name string
Email string
Profile Profile // Profileフィールドを以下のProfile型と定義
}
type Profile struct {
Age int
Height int
Weight int
Address string
}
func main() {
user := User{
Name: "tanaka",
Email: "tanaka@email.com",
Profile: Profile{ // 別の構造体のProfile型を埋め込む
Age: 20,
Height: 175,
Weight: 70,
Address: "Tokyo"
},
}
fmt.Printf("%+v\n", user)
}
出力結果は以下のようになり、User型の中で別の構造体であるProfile型をしっかり埋め込むことができていると分かります。
{Name:tanaka Email:tanaka@email.com Profile:{Age:20 Height:175 Weight:70 Address:Tokyo}}