L'idioma degli insiemi in Go
Fa parte della sezione Logica e flusso del percorso GO di Coddy. Lezione 31 di 68.
Go non dispone di una struttura dati set integrata come molti altri linguaggi di programmazione. Tuttavia, gli sviluppatori Go hanno creato una soluzione elegante usando le mappe per simulare i set, e questo schema è diventato così comune da essere considerato idiomatico in Go.
L'idioma dei set in Go usa una mappa in cui ti interessano solo le chiavi, non i valori. Poiché devi memorizzare qualcosa come valore, i programmatori Go usano una struct vuota struct{}. Ecco lo schema di base:
var mySet map[string]struct{}La struct vuota struct{} è speciale perché occupa zero byte di memoria. Questo la rende perfetta per gli insiemi in cui devi solo tenere traccia del fatto che qualcosa esista o meno, senza sprecare memoria per valori privi di significato.
Questo approccio sfrutta la proprietà fondamentale delle chiavi di una mappa: devono essere univoche. Quando aggiungi un elemento al tuo insieme, in realtà stai aggiungendo una chiave alla mappa. L’univocità è garantita automaticamente dal comportamento della mappa, offrendoti le vere caratteristiche di un insieme.
Nelle prossime lezioni imparerai a creare, manipolare e utilizzare gli insiemi con questo idiomatico schema Go. Questa tecnica è ampiamente utilizzata nei codebase Go per tenere traccia degli elementi univoci, implementare algoritmi e risolvere problemi in cui è necessario verificare rapidamente l'appartenenza.
Provalo tu
Questa lezione non include una sfida di codice.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Flusso di controllo avanzato
Switch con `fallthrough`Uscire dai cicli annidatiContinuare un ciclo specificoL'istruzione `goto`Riepilogo - Controllo avanzato dei cicli4Progetto: semplice lista di attività
Configurazione del progettoAggiungere un’attività2Struct e metodi
Definire metodi sugli structReceiver per valoreReceiver con puntatoreScegliere i receiverMetodi vs funzioniRiepilogo - comportamento degli struct5Mappe in dettaglio
Mappe di structPuntatori come valori delle mappeVerificare le mappe nilConfrontare le mappeRiepilogo - Contatore della frequenza delle parole3Interfacce (le basi)
Che cos’è un’interfaccia?Definire un’interfacciaImplementare un’interfacciaUsare i tipi interfacciaInterfaccia vuotaAsserzioni di tipoSwitch di tipoRiepilogo: forme e comportamenti6Gli insiemi in Go idiomatico
L'idioma degli insiemi in GoCreare un insiemeAggiungere elementi a un insiemeVerificare l'appartenenzaRimuovere elementi da un insiemeIterare su un insiemeRiepilogo - Nomi utente univociEsercitati da solo: Compilatore Go online