Menu
Coddy logo textTech

Vérifier l'appartenance

Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 34 sur 68.

Maintenant que vous pouvez ajouter des éléments à votre ensemble, la prochaine opération essentielle consiste à vérifier si un élément spécifique existe dans l'ensemble. C'est ici que l'idiome « comma ok » de Go devient incroyablement utile.

Pour vérifier si un élément existe dans votre ensemble, vous utilisez la même syntaxe que pour vérifier une clé dans une map :

_, ok := colors["red"]
if ok {
    fmt.Println("Red is in the set")
} else {
    fmt.Println("Red is not in the set")
}

L'underscore _ est utilisé car la valeur réelle nous importe peu (celle-ci étant toujours une structure vide). Nous nous intéressons uniquement à la variable booléenne ok, qui nous indique si la clé existe.

Vous pouvez également utiliser ce modèle directement dans une instruction if pour un code plus concis :

if _, exists := colors["blue"]; exists {
    fmt.Println("Blue is in the set")
}

Ce test d'appartenance est rapide et efficace, exploitant l'implémentation optimisée des maps de Go pour vous offrir les avantages de performance d'une véritable structure de données d'ensemble.

quiz iconTestez-vous

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

quiz iconTestez-vous

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

quiz iconTestez-vous

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

challenge icon

Défi

Facile

Construisez un système de vérification des membres d'une équipe qui vérifie si des personnes spécifiques font partie d'une équipe de projet en utilisant l'idiome des ensembles (sets) en Go. Ce défi démontre comment utiliser l'idiome comma ok pour tester l'appartenance à un ensemble.

Vous recevrez deux entrées :

  • Une chaîne de caractères contenant les membres de l'équipe séparés par des virgules (par exemple, "Alice,Bob,Charlie,Diana,Eve")
  • Une chaîne de caractères contenant les personnes à vérifier séparées par des virgules (par exemple, "Bob,Frank,Alice,Grace,Charlie")

Votre tâche consiste à :

  1. Créer un ensemble en utilisant l'idiome Go map[string]struct{} pour stocker les membres de l'équipe
  2. Analyser la première chaîne d'entrée en la divisant au niveau des virgules pour obtenir les noms individuels des membres de l'équipe
  3. Ajouter chaque membre de l'équipe à votre ensemble en utilisant le littéral de structure vide {} comme valeur
  4. Analyser la seconde chaîne d'entrée en la divisant au niveau des virgules pour obtenir la liste des personnes à vérifier
  5. Pour chaque personne à vérifier, utiliser l'idiome comma ok _, ok := teamSet[person] pour tester l'appartenance
  6. Afficher les résultats de la vérification pour chaque personne vérifiée :
    • Si la personne est dans l'équipe : "[person] is on the team"
    • Si la personne n'est pas dans l'équipe : "[person] is not on the team"
  7. Après avoir vérifié toutes les personnes, afficher un résumé :
    • "Team size: [team_member_count]"
    • "People checked: [people_checked_count]"
    • "Team members found: [found_count]"
    • "Non-team members: [not_found_count]"

Utilisez le package strings pour diviser les chaînes d'entrée au niveau des virgules. Ce défi démontre comment l'idiome comma ok offre un moyen sûr et efficace de vérifier l'appartenance à un ensemble en Go, en renvoyant à la fois la valeur et un booléen indiquant si la clé existe.

Aide-mémoire

Pour vérifier si un élément existe dans un ensemble (map), utilisez l'idiome "comma ok" :

_, ok := colors["red"]
if ok {
    fmt.Println("Red is in the set")
} else {
    fmt.Println("Red is not in the set")
}

L'underscore _ ignore la valeur car nous ne nous soucions que de la variable booléenne ok qui indique si la clé existe.

Vous pouvez également utiliser ce motif directement dans une instruction if :

if _, exists := colors["blue"]; exists {
    fmt.Println("Blue is in the set")
}

Essayez vous-même

package main

import (
	"fmt"
	"strings"
)

func main() {
	// Lire l'entrée
	var teamMembersInput string
	var peopleToCheckInput string
	fmt.Scanln(&teamMembersInput)
	fmt.Scanln(&peopleToCheckInput)
	
	// Analyser les chaînes d'entrée
	teamMembers := strings.Split(teamMembersInput, ",")
	peopleToCheck := strings.Split(peopleToCheckInput, ",")
	
	// TODO: Écrivez votre code ci-dessous
	// Créer un ensemble en utilisant map[string]struct{}
	// Ajouter les membres de l'équipe à l'ensemble
	// Vérifier chaque personne en utilisant l'idiome "comma ok"
	// Afficher les résultats de la vérification et le résumé
	
}
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