Les structs, ou structures, en langage Go (également connu sous le nom de Golang), sont des types de données composés qui permettent de regrouper des champs de données de types différents sous un même nom. Ils jouent un rôle crucial dans la programmation en Go, offrant une manière flexible et puissante de représenter et de manipuler des données complexes.
Lorsque vous déclarez une struct en Go, vous créez essentiellement un nouveau type de données personnalisé. Cela vous permet de définir la structure exacte des données que vous souhaitez manipuler. Chaque champ de la struct a un nom et un type de données associé. Ces champs peuvent être de n’importe quel type de données, y compris d’autres structs, ce qui permet de créer des structures de données imbriquées et complexes.

La solution définitive pour raccourcir les liens et gérer vos campagnes digitales de manière professionnelle.
• Raccourcissement instantané et rapide des liens
• Pages de profil interactives
• Codes QR professionnels
• Analyses détaillées de vos performances digitales
• Et bien plus de fonctionnalités gratuites !
Voici un exemple simple de déclaration d’une struct en Go :
gopackage main
import "fmt"
// Déclaration d'une struct nommée Personne
type Personne struct {
Nom string
Age int
Adresse string
}
func main() {
// Initialisation d'une nouvelle instance de la struct Personne
p := Personne{
Nom: "Jean",
Age: 30,
Adresse: "123 Rue Principale",
}
// Affichage des informations de la personne
fmt.Println("Nom:", p.Nom)
fmt.Println("Age:", p.Age)
fmt.Println("Adresse:", p.Adresse)
}
Dans cet exemple, nous avons déclaré une struct nommée Personne
avec trois champs : Nom
, Age
, et Adresse
. Ensuite, nous avons initialisé une nouvelle instance de cette struct en fournissant des valeurs pour chaque champ. Enfin, nous avons affiché les informations de cette personne en accédant directement aux champs de la struct à l’aide de la syntaxe nom_de_la_variable.nom_du_champ
.
Les structs en Go offrent également la possibilité d’utiliser des méthodes, qui sont des fonctions liées à un type spécifique. Cela permet de définir des comportements associés à une struct, ce qui rend le code plus modulaire et plus facile à comprendre.
Voici un exemple qui ajoute une méthode Saluer()
à la struct Personne
:
gopackage main
import "fmt"
type Personne struct {
Nom string
Age int
Adresse string
}
// Méthode Saluer associée à la struct Personne
func (p Personne) Saluer() {
fmt.Printf("Bonjour, je m'appelle %s et j'ai %d ans.\n", p.Nom, p.Age)
}
func main() {
p := Personne{
Nom: "Jean",
Age: 30,
Adresse: "123 Rue Principale",
}
// Appel de la méthode Saluer()
p.Saluer()
}
Dans cet exemple, la méthode Saluer()
est associée à la struct Personne
en utilisant une syntaxe spécifique. Cette méthode peut accéder aux champs de la struct et les utiliser pour produire une sortie spécifique. L’appel de la méthode se fait en utilisant la syntaxe nom_de_la_variable.methode()
.
En résumé, les structs en Go sont des outils puissants pour organiser et manipuler des données de manière structurée. Ils offrent une grande flexibilité et sont largement utilisés dans le développement d’applications en Go pour créer des types de données personnalisés et des abstractions de haut niveau.
Plus de connaissances
Bien sûr, plongeons un peu plus profondément dans le monde des structs en langage Go.
Déclaration et Initialisation des Structs
En Go, vous pouvez déclarer une struct en utilisant le mot-clé type
, suivi du nom de la struct et de la liste de ses champs entre accolades. Vous pouvez également initialiser une nouvelle instance de la struct en fournissant des valeurs pour ses champs lors de sa déclaration ou en utilisant la syntaxe des littéraux de structs.
Exemple de déclaration et d’initialisation :
go// Déclaration d'une struct nommée Point
type Point struct {
X int
Y int
}
// Initialisation d'une nouvelle instance de Point
p1 := Point{X: 10, Y: 20}
Accès aux Champs de Structs
Pour accéder aux champs d’une struct, utilisez la syntaxe nom_de_la_variable.nom_du_champ
.
gofmt.Println(p1.X) // Affiche la valeur du champ X de p1
Méthodes
Les méthodes en Go sont des fonctions qui agissent sur une instance spécifique d’un type. Vous pouvez déclarer des méthodes pour les structs en spécifiant le type auquel la méthode est associée entre les mots-clés func
et le nom de la méthode.
Exemple de méthode associée à une struct :
go// Déclaration d'une méthode pour la struct Point
func (p Point) DistanceFromOrigin() float64 {
return math.Sqrt(float64(p.X*p.X + p.Y*p.Y))
}
// Appel de la méthode sur une instance de Point
distance := p1.DistanceFromOrigin()
Structs Anonymes
En Go, vous pouvez également déclarer des structs anonymes, c’est-à-dire des structs sans nom. Cela est utile lors de la définition de types de données temporaires ou lors de la création de structs imbriquées.
Exemple de struct anonyme :
go// Déclaration d'une struct anonyme
p2 := struct {
X int
Y int
}{X: 30, Y: 40}
Structs Imbriqués
Les structs en Go peuvent être imbriquées, ce qui signifie qu’un champ d’une struct peut être d’un type struct lui-même.
Exemple de struct imbriquée :
gotype Circle struct {
Center Point
Radius float64
}
// Initialisation d'une instance de Circle
c := Circle{
Center: Point{X: 0, Y: 0},
Radius: 5,
}
Pointeurs vers des Structs
En Go, vous pouvez également utiliser des pointeurs vers des structs pour manipuler directement les données d’une struct sans avoir à copier tout l’objet.
Exemple d’utilisation de pointeurs avec une struct :
go// Déclaration d'un pointeur vers un Point
var ptr *Point
// Initialisation du pointeur pour qu'il pointe vers p1
ptr = &p1
// Accès aux champs via le pointeur
fmt.Println(ptr.X) // Affiche la valeur du champ X de p1
Comparaison de Structs
En Go, vous pouvez comparer deux structs à l’aide de l’opérateur ==
. Les structs sont considérés comme égaux si tous leurs champs sont égaux.
Exemple de comparaison de structs :
gop3 := Point{X: 10, Y: 20}
if p1 == p3 {
fmt.Println("p1 et p3 sont égaux")
} else {
fmt.Println("p1 et p3 ne sont pas égaux")
}
Utilisation des Tags Structs
En Go, vous pouvez ajouter des tags aux champs d’une struct pour spécifier des métadonnées. Les tags sont utilisés couramment pour la sérialisation et la désérialisation de données.
Exemple d’utilisation des tags :
gotype Person struct {
Nom string `json:"name"`
Age int `json:"age"`
Adresse string `json:"address"`
// ...
}
En résumé, les structs en Go offrent une manière flexible et efficace de représenter des données structurées. Leur utilisation est répandue dans le développement en Go pour créer des types de données personnalisés, des abstractions complexes et des APIs bien définies.