In Golang maken structuren (of structs) het mogelijk om elementen van verschillende typen te groeperen in een enkele eenheid. Dit is handig voor het modelleren van entiteiten uit de echte wereld. Anonieme structuren in Golang zijn tijdelijke structuren zonder namen die voor eenmalige doeleinden worden gebruikt, terwijl anonieme velden het insluiten van naamloze velden mogelijk maken.

Bijvoorbeeld:
package main
import "fmt"
// struct học sinh với cấu trúc và trường ẩn danh
type Student struct {
struct { // Cấu trúc bên trong ẩn danh cho thông tin cá nhân
name string
enrollment int
}
GPA float64 // Trường chuẩn
}
func main() {
student := Student{
struct {
name string
enrollment int
}{
name: "A",
enrollment: 12345,
},
GPA: 3.8,
}
fmt.Println("Name:", student.name)
fmt.Println("Enrollment:", student.enrollment)
fmt.Println("GPA:", student.GPA)
}
Syntaxis:
variable := struct {
field1 dataType1
field2 dataType2 # Cấu trúc ẩn danh
// Trường bổ sung khi cần
}{value1, value2}
type StructName struct {
dataType1
dataType2 # Trường ẩn danh
// Trường ẩn danh bổ sung
}
Anonieme structuren in Go
Anonieme structuren in Go worden zonder naam gedefinieerd en zijn handig voor het maken van tijdelijke, wegwerpbare structuren. Hier is de syntaxis en het codevoorbeeld.
Syntaxis:
variable := struct {
field1 dataType1
field2 dataType2
// Các trường bổ sung khi cần
}{value1, value2}
Bijvoorbeeld:
package main
import "fmt"
// Cấu trúc sinh viên với cấu trúc bên trong ẩn danh cho thông tin cá nhân
type Student struct {
personalDetails struct { // Cấu trúc ẩn danh bên trong cho thông tin cá nhân
name string
enrollment int
}
GPA float64 // Trường chuẩn
}
func main() {
// Khởi tạo cấu trúc bên trong cho student
student := Student{
personalDetails: struct {
name string
enrollment int
}{
name: "A",
enrollment: 12345,
},
GPA: 3.8,
}
// Hiện giá trị
fmt.Println("Name:", student.personalDetails.name)
fmt.Println("Enrollment:", student.personalDetails.enrollment)
fmt.Println("GPA:", student.GPA)
}
Resultaat:
Name: A
Enrollment: 12345
GPA: 3.8
Deze code definieert een studentstructuur met een anonieme personalDetails- structuur daarin , waarin de naam en registratiegegevens worden opgeslagen. Initialiseer vervolgens de student met waarden voor deze velden en druk deze af.
Anonieme velden
Met anonieme velden in Go kunt u velden definiëren zonder expliciete namen; alleen het veldtype wordt gespecificeerd. Dit is handig wanneer velden op natuurlijke wijze op de typenaam volgen.
Syntaxis
type StructName struct {
dataType1
dataType2
// Additional anonymous fields
}
Bijvoorbeeld:
package main
import "fmt"
// Cấu trúc học sinh bằng các trường ẩn danh
type Student struct {
int // Số đăng ký (trường ẩn danh)
string // Tên trường ẩn danh
float64 // GPA (trường ẩn danh)
}
func main() {
// Khởi tạo struct học sinh với các trường ẩn danh
student := Student{12345, "A", 3.8}
// Hiện giá trị
fmt.Println("Enrollment:", student.int)
fmt.Println("Name:", student.string)
fmt.Println("GPA:", student.float64)
}
Resultaat:
Enrollment: 12345
Name: A
GPA: 3.8
Hierbij fungeren de gegevenstypen ( int, string, float64 ) als veldnamen, waardoor de toegang tot de waarden afhankelijk is van de typen.
Belangrijke punten om te onthouden over anonieme velden in Golang
1. Unieke vereiste: u kunt niet twee velden van hetzelfde type in één structuur gebruiken. Bijvoorbeeld:
type InvalidStudent struct {
int
int // Error: duplicate type
}
2. Benoemde en anonieme velden combineren: U kunt anonieme en benoemde velden in een structuur combineren.
type Student struct {
id int // Named field
int // Anonymous field
}