In Golang ermöglichen Strukturen (oder Structs), Elemente unterschiedlichen Typs zu einer Einheit zu gruppieren, was für die Modellierung realer Entitäten nützlich ist. Anonyme Strukturen in Golang sind temporäre Strukturen ohne Namen, die für einmalige Zwecke verwendet werden, während anonyme Felder das Einbetten unbenannter Felder ermöglichen.

Zum Beispiel:
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)
}
Syntax:
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
}
Anonyme Strukturen in Go
Anonyme Strukturen in Go werden ohne Namen definiert und eignen sich zum Erstellen temporärer, verfügbarer Strukturen. Hier ist die Syntax und ein Codebeispiel.
Syntax:
variable := struct {
field1 dataType1
field2 dataType2
// Các trường bổ sung khi cần
}{value1, value2}
Zum Beispiel:
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)
}
Ergebnis:
Name: A
Enrollment: 12345
GPA: 3.8
Dieser Code definiert eine Student- Struktur mit einer anonymen personalDetails- Struktur, in der Name und Registrierungsinformationen gespeichert sind. Anschließend initialisiert er student mit Werten für diese Felder und gibt sie aus.
Anonyme Felder
Anonyme Felder in Go ermöglichen die Definition von Feldern ohne explizite Namen, nur deren Typen. Dies ist nützlich, wenn Felder automatisch dem Typnamen folgen.
Syntax
type StructName struct {
dataType1
dataType2
// Additional anonymous fields
}
Zum Beispiel:
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)
}
Ergebnis:
Enrollment: 12345
Name: A
GPA: 3.8
Dabei fungieren die Datentypen ( int, string, float64 ) als Feldnamen, der Zugriff auf die Werte ist also typenabhängig.
Wichtige Punkte zu anonymen Feldern in Golang
1. Einzigartige Anforderung: Sie können nicht zwei Felder desselben Typs in einer Struktur verwenden. Beispiel:
type InvalidStudent struct {
int
int // Error: duplicate type
}
2. Kombinieren benannter und anonymer Felder: Sie können anonyme und benannte Felder in einer Struktur kombinieren.
type Student struct {
id int // Named field
int // Anonymous field
}