Menu
Coddy logo textTech

Supprimer d'un ensemble

Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 35 sur 68.

Parfois, vous devez supprimer des éléments de votre ensemble, et Go rend cela simple en utilisant la fonction intégrée delete(). Puisque votre ensemble est en réalité une map sous-jacente, supprimer un élément fonctionne exactement comme supprimer une clé d'une map.

Pour supprimer un élément de votre ensemble, utilisez la fonction delete() avec votre ensemble et l'élément que vous souhaitez supprimer :

delete(colors, "red")

La fonction delete() prend deux paramètres : la map (votre ensemble) et la clé que vous souhaitez supprimer. Si l'élément existe dans l'ensemble, il est supprimé. Si l'élément n'existe pas, la fonction ne fait rien - aucune erreur n'est levée.

Ce comportement est parfait pour les ensembles car vous voulez souvent vous assurer qu'un élément n'est pas présent, peu importe s'il était présent initialement. L'opération est rapide et efficace, tout en conservant les avantages de performance de l'implémentation de map sous-jacente de Go.

challenge icon

Défi

Facile

Créez un système de gestion de livres de bibliothèque qui supprime des livres de différentes collections de genres en utilisant l’idiome des ensembles de Go. Ce défi montre comment utiliser la fonction delete() pour supprimer des éléments d’ensembles tout en suivant le processus de suppression.

Vous recevrez deux entrées :

  • Une chaîne contenant les livres de la collection de fiction, séparés par des virgules (par exemple, "1984,Dune,Foundation,Neuromancer,Brave New World")
  • Une chaîne contenant les livres à supprimer, séparés par des virgules (par exemple, "Dune,Harry Potter,Foundation,Twilight,1984")

Votre tâche consiste à :

  1. Créer un ensemble en utilisant l’idiome Go map[string]struct{} pour stocker les livres de fiction
  2. Analyser la première chaîne d’entrée en la divisant sur les virgules afin d’obtenir les titres individuels des livres
  3. Ajouter chaque livre à votre ensemble en utilisant le littéral de structure vide {} comme valeur
  4. Analyser la deuxième chaîne d’entrée en la divisant sur les virgules afin d’obtenir la liste des livres à supprimer
  5. Pour chaque livre à supprimer, vérifier s’il existe dans l’ensemble en utilisant l’idiome comma ok
  6. Afficher le processus de suppression pour chaque livre traité :
    • Si le livre existe dans la collection : "Removing: [book_title]"
    • Si le livre n’existe pas dans la collection : "Not found: [book_title]"
  7. Utiliser la fonction delete() pour supprimer les livres qui existent dans l’ensemble
  8. Après avoir traité toutes les demandes de suppression, afficher un résumé :
    • "Initial collection size: [initial_count]"
    • "Removal requests: [requests_count]"
    • "Books successfully removed: [removed_count]"
    • "Books not found: [not_found_count]"
    • "Final collection size: [final_count]"
  9. Enfin, répertorier tous les livres restants dans la collection :
    • En-tête : "Remaining books in fiction collection:"
    • Chaque livre sur une ligne distincte : "- [book_title]"
    • Si aucun livre ne reste : "- Collection is empty"

Utilisez le package strings pour diviser les chaînes d’entrée sur les virgules. Ce défi montre comment la fonction delete() supprime en toute sécurité des éléments d’un ensemble Go, sans générer d’erreurs même lorsqu’elle tente de supprimer des éléments inexistants, ce qui la rend idéale pour les opérations de nettoyage.

Essayez vous-même

package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strings"
)

func main() {
	// Lire l'entrée à l'aide de Scanner pour prendre en charge les titres de livres avec des espaces
	scanner := bufio.NewScanner(os.Stdin)

	scanner.Scan()
	fictionBooks := scanner.Text()
	scanner.Scan()
	booksToRemove := scanner.Text()

	// Analyser les chaînes d'entrée
	fictionList := strings.Split(fictionBooks, ",")
	removeList := strings.Split(booksToRemove, ",")

	// TODO : Écrivez votre code ci-dessous
	// 1. Créer un ensemble à l'aide de map[string]struct{} pour stocker les livres de fiction
	// 2. Ajouter chaque livre de fictionList à l'ensemble
	// 3. Traiter chaque livre dans removeList et vérifier s'il existe
	// 4. Afficher le processus de suppression et utiliser la fonction delete()
	// 5. Afficher les statistiques récapitulatives
	// 6. Lister les livres restants dans la collection
	// N'oubliez pas de trier les livres restants pour une sortie cohérente

	_ = sort.Strings // supprimez cette ligne une fois que vous utilisez sort
	_ = fmt.Println  // supprimez cette ligne une fois que vous utilisez fmt
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur Go en ligne