Dans Golang , les structures (ou structs) nous permettent de regrouper des éléments de différents types en une seule unité, ce qui est utile pour modéliser des entités du monde réel. Les structures anonymes dans Golang sont des structures temporaires sans nom utilisées à des fins ponctuelles, tandis que les champs anonymes permettent l'intégration de champs sans nom.

Par exemple:
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)
}
Syntaxe:
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
}
Structures anonymes en Go
Les structures anonymes en Go sont définies sans nom et sont utiles pour créer des structures temporaires et jetables. Voici la syntaxe et l'exemple de code.
Syntaxe:
variable := struct {
field1 dataType1
field2 dataType2
// Các trường bổ sung khi cần
}{value1, value2}
Par exemple:
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)
}
Résultat:
Name: A
Enrollment: 12345
GPA: 3.8
Ce code définit une structure Student avec une structure personalDetails anonyme à l'intérieur, stockant le nom et les informations d'inscription. Initialisez ensuite l'étudiant avec les valeurs de ces champs et imprimez-les.
Champs anonymes
Les champs anonymes dans Go vous permettent de définir des champs sans noms explicites, seuls leurs types sont spécifiés. Ceci est utile lorsque les champs suivent naturellement le nom du type.
Syntaxe
type StructName struct {
dataType1
dataType2
// Additional anonymous fields
}
Par exemple:
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)
}
Résultat:
Enrollment: 12345
Name: A
GPA: 3.8
Ici, les types de données ( int, string, float64 ) agissent comme des noms de champs, donc l'accès aux valeurs dépend des types.
Points importants à retenir concernant les champs anonymes dans Golang
1. Exigence unique : vous ne pouvez pas utiliser deux champs du même type dans une même structure. Par exemple:
type InvalidStudent struct {
int
int // Error: duplicate type
}
2. Combinaison de champs nommés et anonymes : vous pouvez combiner des champs anonymes et nommés dans une structure.
type Student struct {
id int // Named field
int // Anonymous field
}