Récapitulatif - Listes dynamiques
Fait partie de la section Fondamentaux du Journey GO de Coddy. Leçon 83 sur 109.
Défi
MoyenEntraînons-nous à travailler avec les slices en Go en créant un simple gestionnaire de liste de courses !
Ta tâche consiste à implémenter plusieurs fonctions qui manipulent une liste de courses :
addItems: Ajouter de nouveaux articles à la liste de coursesremoveItem: Supprimer un article de la liste à l’aide de son indexfindExpensiveItems: Trouver les articles dont le prix dépasse un seuilcalculateTotalCost: Calculer le coût total de tous les articles
Chaque article de la liste de courses est représenté par une chaîne de caractères (nom) et un float64 (prix). La fonction principale montre comment toutes ces opérations fonctionnent ensemble.
Essayez vous-même
package main
import "fmt"
// addItems ajoute de nouveaux articles et leurs prix à la liste de courses
func addItems(names []string, prices []float64, newNames []string, newPrices []float64) ([]string, []float64) {
// Votre code ici
return names, prices
}
// removeItem supprime l’article à l’index indiqué
func removeItem(names []string, prices []float64, index int) ([]string, []float64) {
// Votre code ici
return names, prices
}
// findExpensiveItems renvoie les articles dont le prix dépasse le seuil
func findExpensiveItems(names []string, prices []float64, threshold float64) []string {
// Votre code ici
return nil
}
// calculateTotalCost renvoie la somme de tous les prix
func calculateTotalCost(prices []float64) float64 {
// Votre code ici
return 0
}
func main() {
// Initialiser des listes de courses vides
names := []string{}
prices := []float64{}
// Ajouter les premiers articles
initialNames := []string{"Apples", "Milk", "Bread"}
initialPrices := []float64{2.99, 3.49, 2.29}
names, prices = addItems(names, prices, initialNames, initialPrices)
// Afficher la liste de courses initiale
fmt.Println("Initial Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
// Calculer et afficher le coût total
total := calculateTotalCost(prices)
fmt.Printf("\nTotal Cost: $%.2f\n", total)
// Rechercher et afficher les articles coûteux
priceThreshold := 3.00
expensiveItems := findExpensiveItems(names, prices, priceThreshold)
fmt.Printf("\nExpensive Items (above $%.2f):\n", priceThreshold)
for _, item := range expensiveItems {
fmt.Println(item)
}
// Ajouter un nouvel article
names, prices = addItems(names, prices, []string{"Cheese"}, []float64{4.99})
// Supprimer un article
names, prices = removeItem(names, prices, 1)
fmt.Println("\nRemoved item at index 1")
// Afficher la liste de courses finale
fmt.Println("\nFinal Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
}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 actions2Variables 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é-valeurEntraînez-vous par vous-même : Compilateur Go en ligne