Golang中的巢狀結構

Golang中的結構或結構體是一種使用者定義類型,它允許我們將一組不同類型的元素建立成一個單元。任何具有一組屬性或欄位的現實世界實體都可以表示為結構。

Golang中的巢狀結構

如何在 Golang 中使用巢狀結構

Go 語言允許嵌套結構。作為另一個結構的字段的結構稱為嵌套結構。換句話說,一個結構包含另一個結構,稱為嵌套結構。句法:

type struct_name_1 struct{
  // Các trường
} 
type struct_name_2 struct{
  variable_name  struct_name_1

}

考慮以下範例來理解 Golang 中的巢狀結構:

例 1:

// Chương trình Go minh hoạc
// cấu trúc lồng nhau
package main

import "fmt"

// Tạo cấu trúc
type Author struct {
	name string
	branch string
	year int
}

// Tạo cấu trúc lòng nhau
type HR struct {

	// cấu trúc là một trường
	details Author
}

func main() {

	// Khởi tạo các trường
	// của cấu trúc
	result := HR{
	
		details: Author{"Sona", "ECE", 2013},
	}

	// Hiện giá trị
	fmt.Println("\nDetails of Author")
	fmt.Println(result)
}

結果:

Details of Author
{{Sona ECE 2013}}

範例 2:

// Chương trình Golang minh họa
// cấu trúc lồng nhau
package main

import "fmt"

// Tạo cấu trúc
type Student struct {
	name string
	branch string
	year int
}

// Tạo cấu trúc lồng nhau
type Teacher struct {
	name string
	subject string
	exp	 int
	details Student
}

func main() {

	// Khởi tạo các trường
	// của cấu trúc
	result := Teacher{
		name: "Suman",
		subject: "Java",
		exp:	 5,
		details: Student{"Bongo", "CSE", 2},
	}

	// Hiện giá trị
	fmt.Println("Details of the Teacher")
	fmt.Println("Teacher's name: ", result.name)
	fmt.Println("Subject: ", result.subject)
	fmt.Println("Experience: ", result.exp)

	fmt.Println("\nDetails of Student")
	fmt.Println("Student's name: ", result.details.name)
	fmt.Println("Student's branch name: ", result.details.branch)
	fmt.Println("Year: ", result.details.year)
}

結果:

Details of the Teacher
Teacher's name:  Suman
Subject:  Java
Experience:  5

Details of Student
Student's name:  Bongo
Student's branch name:  CSE
Year:  2

範例 3:

在 Go 中,結構可以具有本身就是結構的字段,稱為嵌套結構。以下是具有巢狀結構的結構範例:

package main

import (
	"fmt"
)

type Address struct {
	Street	 string
	City	 string
	State	 string
	PostalCode string
}

type Person struct {
	FirstName string
	LastName string
	Age	 int
	Address Address
}

func main() {
	p := Person{
		FirstName: "John",
		LastName: "Doe",
		Age:	 30,
		Address: Address{
			Street:	 "123 Main St",
			City:	 "Anytown",
			State:	 "CA",
			PostalCode: "12345",
		},
	}

	fmt.Println(p.FirstName, p.LastName)
	fmt.Println("Age:", p.Age)
	fmt.Println("Address:")
	fmt.Println("Street:", p.Address.Street)
	fmt.Println("City:", p.Address.City)
	fmt.Println("State:", p.Address.State)
	fmt.Println("Postal Code:", p.Address.PostalCode)
}

結果:

John Doe
Age: 30
Address:
Street: 123 Main St
City: Anytown
State: CA
Postal Code: 12345

這裡我們定義了兩個結構類型:Person和Address。 Person 有一個名為 Address 的巢狀結構欄位。在主函數中,我們建立一個帶有 Address 欄位的新 Person 實例。然��,我們使用點符號列印出 Person 和 Address 結構體的各個欄位值,以存取巢狀欄位。

Sign up and earn $1000 a day ⋙

Leave a Comment

Golang 中的 Volatile 函數

Golang 中的 Volatile 函數

Go 中的可變函數可讓您向函數傳遞可變數量的參數。以下是您需要了解的有關 Golang 中的易失性函數的所有資訊。

Golang 中的命名回傳參數

Golang 中的命名回傳參數

在 Golang 中,命名回傳參數通常被稱為命名參數。 Golang 允許在函數簽章或定義中命名函數的傳回參數或結果。

Go 中的關鍵字

Go 中的關鍵字

關鍵字-關鍵字是語言中用於某些內在過程或代表某些預定義動作的字詞。以下是您需要了解的有關 Golang 中的關鍵字的知識。

Golang中的資料類型

Golang中的資料類型

資料類型指定有效的 Go 變數可以包含的資料類型。 Go語言中,類型分為以下四類:

Golang 中的函數參數

Golang 中的函數參數

Go 支援兩種主要的傳遞參數的方式:按值傳遞和按引用傳遞。 Go 預設使用按值傳遞。

Golang中傳回多個值的函數

Golang中傳回多個值的函數

在Go語言中,允許使用return語句從函數傳回多個值。換句話說,在函數中,一個return語句可以傳回多個值。

Go 中的 Switch 語句

Go 中的 Switch 語句

Golang 和大多數其他程式語言一樣,有 switch 語句。以下是如何在 Golang 中使用 switch 語句。

在 Golang 中使用選擇語句時需要了解的案例

在 Golang 中使用選擇語句時需要了解的案例

在本文中,我們將學習如何使用預設情況來避免死鎖。但首先,讓我們先了解一下使用 Golang select 指令時出現死鎖的情況是什麼?

Golang 中的匿名結構和字段

Golang 中的匿名結構和字段

Golang 中的匿名結構是沒有名稱的一次性臨時結構,而匿名欄位允許嵌入未命名的欄位。

如何在 Golang 中使用 Rune

如何在 Golang 中使用 Rune

Golang 中的 Runes 是什麼?如何在 Golang 中使用 Rune?文章會告訴你答案。

如何在 Golang 中使用運算符

如何在 Golang 中使用運算符

運算符允許我們對操作數執行不同類型的操作。在 Go語言中,運算子可以根據其不同的功能進行分類。

Golang 中的 Void 標識符

Golang 中的 Void 標識符

Golang 中的 _(底線)稱為空白標識符。標識符是程式組件的使用者定義名稱,用於識別目的。

如何用 Golang 創建基本程序

如何用 Golang 創建基本程序

你好世界!是任何程式語言中的第一個基本程式。您可以按照以下步驟使用 Golang 編寫第一個程式。

如何在 Windows 上安裝 Go

如何在 Windows 上安裝 Go

Golang 可以輕鬆安裝在 Windows 上。以下是在 Windows 上安裝 Golang 的詳細逐步指南。

Golang 中同名的方法

Golang 中同名的方法

Golang允許在同一個套件中建立兩個或多個同名的方法,但是這些方法的接收者必須是不同的類型。

使用 Microsoft Word 的 11 種創意方法

使用 Microsoft Word 的 11 種創意方法

當您想到 Microsoft Word 時,您會想到什麼?文件?恢復?雖然這些肯定是它的主要用途,但 Word 也是一個令人驚訝的多功能工具,可用於各種創意專案。

如何在 WhatsApp 狀態中標記好友

如何在 WhatsApp 狀態中標記好友

WhatsApp 已將 WhatsApp 狀態中標記好友的功能更新至 Android 和 iOS 版本的所有帳號。

為每個人收集易於製作、美味、優質的咖啡雞尾酒配方

為每個人收集易於製作、美味、優質的咖啡雞尾酒配方

喜歡咖啡想嘗試製作自己的咖啡雞尾酒嗎?因此以下的文章將為您總結製作簡單、美味且誘人的咖啡雞尾酒的食譜。

《死神》:外貌變化最多的角色

《死神》:外貌變化最多的角色

雖然《死神》系列中有很多角色被認為是可識別的,但這並不一定意味著他們從頭到尾都有相同的外觀。以下是外表發生顯著變化的《死神》角色。

如何優化 Google Chrome 以實現超快速啟動

如何優化 Google Chrome 以實現超快速啟動

我們都遇到過這種情況:點擊 Chrome 圖標,然後等待瀏覽器啟動。等待主頁加載似乎永遠是令人沮喪的。

如何在三星手機上用照片製作貼紙

如何在三星手機上用照片製作貼紙

在某些三星 Galaxy 手機上,有一個從相簿中的照​​片創建貼紙的選項,允許用戶自由創建用於資訊中的貼紙。

如何修復 Windows 中工作管理員不工作的問題

如何修復 Windows 中工作管理員不工作的問題

當任務管理器未運行時,使用者無法使用它。以下是修復 Windows 11/10 PC 上任務管理器無法運作的方法。

絕對戰神最新守則

絕對戰神最新守則

最新的 Code Dau Than Tuyet The 為玩家提供硬幣、金錠和許多其他物品,包括 Nguyen Phach、禮品盒、箱子、Trac Viet 石…

傳說中的龍神代碼及輸入方法

傳說中的龍神代碼及輸入方法

傳奇龍神的禮包獎勵主要為金幣和鑽石。除此之外還有一些獎勵箱、石頭、恢復物品…

NanoCell 是什麼?我應該選擇 NanoCell 還是 OLED 電視?

NanoCell 是什麼?我應該選擇 NanoCell 還是 OLED 電視?

其中兩項最新技術是 OLED 顯示器和 LG 的 NanoCell 顯示器。這是兩種截然不同的電視類型,但通常都具有相似的功能。

如何正確有效地使用洗衣機清潔模式

如何正確有效地使用洗衣機清潔模式

以下的文章將幫助您了解如何正確使用洗衣機清潔模式來幫助去除細菌和污垢。

Chromecast 正式停產

Chromecast 正式停產

如果您想更換智慧電視體驗或將任何電視變成智慧電視,Google的 Chromecast 系列一直是受歡迎的選擇。

這款 Android 手機剛剛打破了智慧型手機電池續航力的紀錄

這款 Android 手機剛剛打破了智慧型手機電池續航力的紀錄

並非 iPhone 15 Pro Max,根據 Toms Guide 專家的最新評測,新款華碩 ROG Phone 8 Pro 安卓遊戲手機才是目前電池續航力最長的手機。

如何使用 Photoshop 中的生成填充功能將照片變成繪畫

如何使用 Photoshop 中的生成填充功能將照片變成繪畫

無論您想將照片變成水彩畫、油畫或其他類型的繪畫,以下是如何在 Photoshop 中使用生成填充來創建效果的方法。

Apple Watch 挽救了一位懷孕心臟科醫生的生命

Apple Watch 挽救了一位懷孕心臟科醫生的生命

一位兒科心臟科醫生解釋說,在該女子的 Apple Watch 建議她尋求醫療協助後,她不得不進行緊急剖腹產。