English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
構造体Golangではユーザー定義の型であり、一つのユニットで異なるタイプの要素のセットを作成することができます。属性やフィールドを持つ実際のオブジェクトはすべて構造体で表現できます。Go言語は構造体のネストを許可しています。構造体は別の構造体のフィールドであり、それをネスト構造体と呼びます。言い換えれば、別の構造体内の構造体をネスト構造体と呼びます。
文法:
type struct_name_1 struct{ // フィールド } type struct_name_2 struct{ variable_name struct_name_1 }
この概念についての説明に例を用いてみましょう:
//ネスト構造体 package main import "fmt" //構造体の作成 type Author struct { name string branch string year int } //ネスト構造体の作成 type HR struct { //フィールド構造 details Author } func main() { // 構造体フィールドの初期化 result := HR{ details: Author{"Sona", "ECE", 2013, } //出力値の印刷 fmt.Println("\n著者の詳細情報") fmt.Println(result) }
出力:
著者の詳細情報 {{Sona ECE 2013}}
ネスト構造体の例2:
package main import "fmt" //構造体の作成 type Student struct { name string branch string year int } //ネスト構造体の作成 type Teacher struct { name string subject string exp int details Student } func main() { //構造体フィールドの初期化 result := Teacher{ name: "Suman", subject: "Java", exp: 5, details: Student{"Bongo", "CSE", 2, } fmt.Println("先生の詳細情報") fmt.Println("先生の名前: ", result.name) fmt.Println("学科: ", result.subject) fmt.Println("経験: ", result.exp) fmt.Println("\n学生の詳細情報") fmt.Println("学生の名前: ", result.details.name) fmt.Println("学生の部署名: ", result.details.branch) fmt.Println("年齢: ", result.details.year) }
出力:
先生の詳細情報 先生の名前: Suman 学科: Java 経験: 5 学生の詳細情報 学生の名前: Bongo 学生の部署名: CSE 年齢: 2