Récapitulatif - Structures de données personnalisées
Fait partie de la section Fondamentaux du Journey GO de Coddy — leçon 101 sur 109.
Défi
FacileCréons une structure de données personnalisée simple pour récapituler ce que nous avons appris sur les structs en Go.
Dans ce défi, vous allez créer une structure de données Counter de base qui peut :
- Suivre une valeur de comptage
- Incrémenter le compte
- Décrémenter le compte
- Réinitialiser le compte à zéro
Complétez le code en implémentant les méthodes manquantes pour la struct Counter.
Essayez vous-même
package main
import (
"fmt"
)
// Counter est une structure de données de compteur simple
type Counter struct {
value int
name string
}
// NewCounter crée un nouveau compteur avec un nom donné
func NewCounter(name string) Counter {
return Counter{
value: 0,
name: name,
}
}
// Increment augmente le compteur de 1
func (c *Counter) Increment() {
// Ajouter le code pour incrémenter la valeur du compteur
}
// Decrement diminue le compteur de 1 (mais pas en dessous de 0)
func (c *Counter) Decrement() {
// Ajouter le code pour décrémenter la valeur du compteur
// S'assurer que la valeur ne descend pas en dessous de 0
}
// Reset remet le compteur à 0
func (c *Counter) Reset() {
// Ajouter le code pour remettre le compteur à 0
}
// Value retourne le compte actuel
func (c Counter) Value() int {
// Ajouter le code pour retourner la valeur actuelle
return 0 // Remplacer ceci
}
// String retourne une représentation sous forme de chaîne du compteur
func (c Counter) String() string {
return fmt.Sprintf("%s: %d", c.name, c.value)
}
func main() {
// Créer un nouveau compteur nommé "Visitors"
visitors := NewCounter("Visitors")
// Incrémenter le compteur quelques fois
visitors.Increment()
visitors.Increment()
visitors.Increment()
// Afficher le compte actuel
fmt.Println(visitors)
fmt.Println("Current value:", visitors.Value())
// Décrémenter le compteur
visitors.Decrement()
fmt.Println(visitors)
// Réinitialiser le compteur
visitors.Reset()
fmt.Println(visitors)
// Tester que le compteur ne descend pas en dessous de zéro
visitors.Decrement()
fmt.Println(visitors)
}Toutes les leçons de Fondamentaux
4Opérateurs de comparaison et logiques
Opérateurs de comparaison - Partie 1Opérateurs de comparaison - Partie 2Opérateur logique ANDOpérateur logique OROpérateur logique NOTBases de la priorité des opérateursRécapitulatif - Effectuer des comparaisons7Structures de contrôle : Les boucles
Explication de la boucle `for`Boucle For - Les basesBoucle For - Condition uniquementLe mot-clé `break`Le mot-clé `continue`Boucles imbriquéesRécapitulatif - Répéter des actions10Types composites : Tableaux
Introduction aux tableauxDéclaration de tableauxInitialisation de tableauxAccès aux éléments d'un tableauTaille d'un tableau avec `len`Itération sur les tableauxTableaux multidimensionnels13Types composites : Structures
Définition de types personnalisésCréation d'instances de structuresAccès aux champs d'une structurePointeurs vers des structuresInitialisation de structuresStructures imbriquéesStructures anonymesRécapitulatif - Structures de données personnalisées2Variables et types de données de base
Qu'est-ce qu'une variableInférence de type avec `:=` Entiers (int)Nombres à virgule flottanteBooléensChaînes de caractères (Strings)Valeurs zéroConstantesConventions de nommageRécapitulatif - Variables et types5Entrées/Sorties de base
Sortie formatéeVerbes de formatageAffichage des typesSaisie utilisateur de baseRécapitulatif - Entrées et Sorties8Fonctions
Comprendre les fonctionsDéclarer une fonctionAppeler des fonctionsParamètres de fonctionRetourner une valeur uniqueRetourner plusieurs valeursValeurs de retour nomméesBases de la portée des fonctionsRécapitulatif - Créer du code réutilisable11Types composites : Slices
Introduction aux SlicesDéclaration de littéraux de SlicesCréation de Slices avec `make`Longueur vs Capacité des SlicesAccès aux éléments d'un SliceAjout d'élémentsDécoupage de Slices/Tableaux existantsItération sur les SlicesCopie de SlicesRécapitulatif - Listes dynamiques3Opérateurs de base
Opérateurs arithmétiquesOpérateur de divisionL'opérateur moduloOpérateur d'affectationOpérateurs d'affectation augmentéeIncrémentation et décrémentationRécapitulatif - Calculs6Structure de contrôle : Les conditionnelles
L'instruction `if`Le mot-clé `else`Le mot-clé `else if`Masquage de variable dans `if`Initialisation des variablesL'instruction `switch``switch` avec expressions`switch` sans expressionLe mot-clé `fallthrough`Récapitulatif - Prendre des décisions9Pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de variables pointeursL'opérateur d'adresseDéréférencement de pointeursUtiliser des pointeurs dans les fonctionsPointeurs NilRécapitulatif - Comprendre les pointeurs12Types composites : Maps
Introduction aux MapsDéclaration de littéraux de MapCréation de Maps avec `make`Ajout et mise à jour de paires clé-valeurAccès aux valeurs d'une MapVérification de l'existence d'une cléSuppression d'entrées de MapTaille d'une MapItération sur les MapsRécapitulatif - Stockage clé-valeur