Introduction
Ce laboratoire vise à tester vos connaissances des structs de Go, qui sont des collections typées de champs. Les structs sont utiles pour regrouper des données pour former des enregistrements.
This tutorial is from open-source community. Access the source code
💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici
Ce laboratoire vise à tester vos connaissances des structs de Go, qui sont des collections typées de champs. Les structs sont utiles pour regrouper des données pour former des enregistrements.
Dans ce laboratoire, vous devez compléter la fonction newPerson
qui construit un nouveau struct person
avec le nom donné. Le type de struct person
a les champs name
et age
.
person
doit avoir les champs name
et age
.newPerson
doit construire un nouveau struct person
avec le nom donné.newPerson
doit retourner un pointeur vers le nouveau struct person
créé.main
doit afficher les informations suivantes :
newPerson
avec le nom "Jon" et l'âge 42.name
d'un struct avec le nom "Sean" et l'âge 50.age
d'un pointeur de struct vers un struct avec le nom "Sean" et l'âge 50.age
d'un pointeur de struct vers un struct avec le nom "Sean" et l'âge 50 après que le champ age
ait été mis à jour à 51.$ go run structs.go
{Bob 20}
{Alice 30}
{Fred 0}
&{Ann 40}
&{Jon 42}
Sean
50
51
Voici le code complet :
// Les _structs_ de Go sont des collections typées de champs.
// Ils sont utiles pour regrouper des données pour former
// des enregistrements.
package main
import "fmt"
// Ce type de struct `person` a les champs `name` et `age`.
type person struct {
name string
age int
}
// `newPerson` construit un nouveau struct `person` avec le nom donné.
func newPerson(name string) *person {
// Vous pouvez retourner en toute sécurité un pointeur vers une variable locale
// car une variable locale survivra à la portée de la fonction.
p := person{name: name}
p.age = 42
return &p
}
func main() {
// Cette syntaxe crée un nouveau struct.
fmt.Println(person{"Bob", 20})
// Vous pouvez nommer les champs lors de l'initialisation d'un struct.
fmt.Println(person{name: "Alice", age: 30})
// Les champs omis seront initialisés avec leur valeur par défaut.
fmt.Println(person{name: "Fred"})
// Un préfixe `&` produit un pointeur vers le struct.
fmt.Println(&person{name: "Ann", age: 40})
// Il est courant d'encapsuler la création de nouveaux structs dans des fonctions constructeurs
fmt.Println(newPerson("Jon"))
// Accédez aux champs d'un struct avec un point.
s := person{name: "Sean", age: 50}
fmt.Println(s.name)
// Vous pouvez également utiliser des points avec des pointeurs de struct - les
// pointeurs sont automatiquement déréférencés.
sp := &s
fmt.Println(sp.age)
// Les structs sont mutables.
sp.age = 51
fmt.Println(sp.age)
}
Dans ce laboratoire, vous avez appris à utiliser les structs de Go pour regrouper des données pour former des enregistrements. Vous avez également appris à créer de nouveaux structs, à accéder aux champs d'un struct et à mettre à jour les champs d'un struct.