Trong cấu trúc Go, các trường được khuyến khích cũng giống như các trường ẩn danh, kiểu của trường là tên của trường.
Chúng ta sử dụng khái niệm này trong cấu trúc lồng nhau, trong đó một cấu trúc là một trường trong một cấu trúc khác, chỉ cần thêm tên của cấu trúc vào một cấu trúc khác và nó hoạt động giống như Trường ẩn danh đối với cấu trúc lồng nhau. Và các trường của cấu trúc đó (khác với cấu trúc lồng nhau) là một phần của cấu trúc lồng nhau, kiểu trường như vậy được gọi là trường được thăng cấp. Nếu cấu trúc ẩn danh hoặc cấu trúc lồng nhau và cấu trúc cha chứa một trường có cùng tên, thì trường đó không được thăng cấp, chỉ những trường có tên khác nhau mới được thăng cấp lên cấu trúc.
Cú pháp:
type x struct{
// Các trường
}
type y struct{
// Các trường của cấu trúc y
x
}
Giờ hãy cùng nhau tìm hiểu kỹ hơn về cách dùng khái niệm trường được khuyến khích trong Golang này qua ví dụ:
Ví dụ:
// Chương trình Go minh họa
// khái niệm các trường được khuyến khích
package main
import "fmt"
// Cấu trúc
type details struct {
// Các trường
// cấu trúc chi tiết
name string
age int
gender string
}
// Cấu trúc lồng nhau
type student struct {
branch string
year int
details
}
func main() {
// Khởi tạo các trường của
// cấu trúc học sinh
values := student{
branch: "CSE",
year: 2010,
details: details{
name: "Sumit",
age: 28,
gender: "Male",
},
}
// Các trường được khuyến khích của cấu trúc hoc sinh
fmt.Println("Name: ", values.name)
fmt.Println("Age: ", values.age)
fmt.Println("Gender: ", values.gender)
// Các trường bình thường của
// cấu trúc học sinh
fmt.Println("Year: ", values.year)
fmt.Println("Branch : ", values.branch)
}
Kết quả:
Name: Sumit
Age: 28
Gender: Male
Year: 2010
Branch : CSE
Giải thích chi tiết:
Trong ví dụ trên, chúng ta có hai cấu trúc được đặt tên là details và student. Trong đó details structure là cấu trúc bình thường và student structure là cấu trúc lồng nhau chứa details structure dưới dạng các trường trong đó giống như các trường ẩn danh. Bây giờ, các trường của details structure, tức là name, age và gender được thăng cấp lên student structure và được gọi là các trường được thăng cấp. Bây giờ, bạn có thể truy cập trực tiếp vào chúng với sự trợ giúp của student structure như values.name, values.age và values.gender.