English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang 基礎チュートリアル

Golang 控制文

Golang ファンクション & メソッド

Golang 構造体

Golang スライス & 配列

Golang 文字列(String)

Golang ポインタ

Golang インターフェース

Golang 并行

Golang エラ(Error)

Golang その他の雑多

Go 嵌套した構造体

構造体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