【Golang】構造体(struct)の中に構造体を埋め込む方法とは

構造体の中に構造体を埋め込む方法

構造体の中で構造体を埋め込む(構造体の中で別の構造体を使う)には、構造体内のフィールドに別の構造体を型として指定すれば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}}
タイトルとURLをコピーしました