Menu
Coddy logo textTech

Verificare l'appartenenza

Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 34 di 68.

Ora che sai aggiungere elementi al tuo insieme, la prossima operazione essenziale consiste nel verificare se un elemento specifico è presente nell’insieme. È qui che l’idioma «comma ok» di Go diventa incredibilmente utile.

Per verificare se un elemento esiste nel tuo insieme, usa la stessa sintassi che si usa per verificare la presenza di una chiave in una mappa:

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

Il trattino basso _ viene usato perché non ci interessa il valore effettivo (che è sempre una struct vuota). Ci interessa solo la variabile booleana ok, che ci dice se la chiave esiste.

Puoi anche usare questo schema direttamente in un'istruzione if per scrivere codice più conciso:

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

Questo test di appartenenza è rapido ed efficiente e sfrutta l’implementazione ottimizzata delle mappe di Go per offrirti i vantaggi in termini di prestazioni di una vera struttura dati di tipo insieme.

challenge icon

Sfida

Facile

Crea un sistema di verifica dei membri di una squadra che controlli se determinate persone fanno parte di una squadra di progetto usando l’idioma dei set di Go. Questa sfida mostra come usare l’idioma comma ok per verificare l’appartenenza a un set.

Riceverai due input:

  • Una stringa contenente i membri della squadra separati da virgole (ad es. "Alice,Bob,Charlie,Diana,Eve")
  • Una stringa contenente le persone da controllare, separate da virgole (ad es. "Bob,Frank,Alice,Grace,Charlie")

Il tuo compito è:

  1. Creare un set usando l’idioma Go map[string]struct{} per memorizzare i membri della squadra
  2. Analizzare la prima stringa di input dividendola in corrispondenza delle virgole per ottenere i singoli nomi dei membri della squadra
  3. Aggiungere ogni membro della squadra al set usando il valore struct vuoto {}
  4. Analizzare la seconda stringa di input dividendola in corrispondenza delle virgole per ottenere l’elenco delle persone da verificare
  5. Per ogni persona da controllare, usare l’idioma comma ok _, ok := teamSet[person] per verificare l’appartenenza
  6. Mostrare i risultati della verifica per ogni persona controllata:
    • Se la persona fa parte della squadra: "[person] is on the team"
    • Se la persona non fa parte della squadra: "[person] is not on the team"
  7. Dopo aver controllato tutte le persone, mostrare un riepilogo:
    • "Team size: [team_member_count]"
    • "People checked: [people_checked_count]"
    • "Team members found: [found_count]"
    • "Non-team members: [not_found_count]"

Usa il package strings per dividere le stringhe di input in corrispondenza delle virgole. Questa sfida mostra come l’idioma comma ok fornisca un modo sicuro ed efficiente per verificare l’appartenenza a un set Go, restituendo sia il valore sia un booleano che indica se la chiave esiste.

Provalo tu

package main

import (
	"fmt"
	"strings"
)

func main() {
	// Leggi l'input
	var teamMembersInput string
	var peopleToCheckInput string
	fmt.Scanln(&teamMembersInput)
	fmt.Scanln(&peopleToCheckInput)
	
	// Analizza le stringhe di input
	teamMembers := strings.Split(teamMembersInput, ",")
	peopleToCheck := strings.Split(peopleToCheckInput, ",")
	
	// TODO: Scrivi il tuo codice qui sotto
	// Crea un insieme usando map[string]struct{}
	// Aggiungi i membri del team all'insieme
	// Controlla ogni persona usando l'idioma comma ok
	// Mostra i risultati della verifica e il riepilogo
	
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Go online