Menu
Coddy logo textTech
Percorso di apprendimento

Algoritmi e strutture dati in Go

Go ti dà slice e mappe e lascia il resto a te: nessun tipo pila, coda o insieme, e un heap in container/heap che non fa nulla finché non implementi heap.Interface. Questo percorso ti fa costruire ogni struttura in Go con struct e puntatori, poi le usi per ordinare, ricorrere e visitare grafi, e concludi con problemi da colloquio valutati. Gratis, nel browser, con un certificato nella maggior parte dei corsi.

377 lezioni228 sfide702 domande del quiz

Algoritmi e strutture dati in Go, passo dopo passo

38 corsi377 lezioni228 sfide702 domande del quiz

Ogni passaggio è un insieme di corsi Coddy già esistenti, e ogni pulsante Inizia li apre in Go. I tre corsi non ancora insegnati in Go sono elencati dopo i passaggi.

  1. 1
    Inizia questo passoIniziaPila, coda, albero binario, tabella hash e lista concatenata, ognuno costruito da zero in Go e poi usato per risolvere problemi. Alla fine, uno slice usato come pila e una mappa usata come insieme sono scelte che sai difendere, e il tipo coda che Go non ha è uno che hai scritto tu.Inizia
  2. 2
    Inizia questo passoIniziaLista doppiamente concatenata, heap e code di priorità, trie, grafi e l'albero AVL autobilanciato. container/list è la prima di queste, già pronta; dopo questo passaggio i cinque metodi di heap.Interface hanno senso, perché hai costruito un heap da te, e l'albero bilanciato che Go non ha mai incluso è uno che sai costruire.Inizia
  3. 3
    Inizia questo passoIniziaBubble sort, selection, insertion, merge, quick, heap, counting e radix sort, scritti in Go e osservati nel visualizzatore. sort.Slice usa il pattern-defeating quicksort da Go 1.19, anche slices.Sort lo usa, e nessuno dei due è stabile, ed è per questo che esiste sort.SliceStable; dopo questo passaggio sai cosa significa ognuna di queste parole.Inizia
  4. 4
    Inizia questo passoIniziaSfide di ricorsione in Go, dove gli stack delle goroutine partono piccoli e crescono su richiesta, quindi una ricorsione profonda migliaia di chiamate raramente va in overflow. Un caso base mancante raggiunge comunque il limite, 1 GB di stack sui sistemi a 64 bit per impostazione predefinita, e termina con un errore fatale invece che con un programma lento. La programmazione dinamica e la manipolazione dei bit sono elencate dopo i passaggi, perché sono insegnate in Python e in C++.IniziaPagina dedicata
  5. 5
    Inizia questo passoIniziaRicerca in ampiezza e in profondità, Dijkstra, Bellman-Ford, ordinamento topologico, Kruskal e Prim in Go, sul grafo che hai costruito nel secondo passaggio. La coda di priorità di Dijkstra in Go è container/heap su uno slice di un tuo tipo: l'heap del secondo passaggio, dietro un'interfaccia.Inizia
  6. 6
Cosa ottieni
Tutto ciò che userai per imparare a programmare

Impara facendo

Scrivi codice vero, interroga database, crea siti web e padroneggia i prompt per l'AI. Le nostre lezioni interattive coprono tutte le competenze di cui ha bisogno uno sviluppatore moderno.

playground.js
Editor di codice
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
Test #1test Case Success icon
Test #2test Case Success icon
Test #3test Case Failure icon
Input
"Alex"
Output
"Hello, Coddy! Alex"

Costruisci la tua serie

Sii costante e guarda crescere i tuoi progressi! Tieni traccia della tua abitudine quotidiana di programmare, proteggi la tua serie con i giorni di congelamento e guadagna ricompense ogni giorno che ti presenti.

12 giorni di serie

Torna domani per mantenere la tua serie!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

Lascia o raddoppia

Giorno 5 di 7

fire Freeze icon

Congela serie

2 left

Programma ovunque

Porta il tuo percorso di programmazione sempre con te! Niente configurazioni, niente download: apri l'app e inizia a programmare. Disponibile su iOS, Android e Web con valutazioni di 4,9 stelle.

Python
7Serie
250Punteggio
5Energia
Variabili
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
CONTINUA
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
Percorso
Obiettivi
Classifica
Profilo
4.9
StellaStellaStellaStellaStella
Valutazione

Non sei solo

Competi nelle classifiche globali, invita gli amici per guadagnare ricompense e festeggiate insieme i vostri successi. Programmare è più bello con gli amici!

Lega Sfidante
Lega SfidanteI primi 7 avanzano
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up iconZona promozioneleaderboard Arrow Up icon

Tutti i modi per imparare

Leggi, ascolta, mettiti alla prova, chiedi all'AI o ripassa qualsiasi cosa tu abbia già visto. Ogni lezione si adatta a te.

Introduzione alle variabili
Audio

Una variabile è un contenitore con un nome che memorizza un valore a cui puoi fare riferimento più avanti nel programma.

In Python la crei scrivendo il nome, un segno di uguale e poi il valore che vuoi memorizzare.

Il valore può cambiare nel tempo: riassegnare il nome lo fa semplicemente puntare a un nuovo valore.

1xSarah

Ottieni un certificato

Ottieni un certificato per ogni corso che completi. Aggiungilo al tuo profilo LinkedIn e al curriculum per mostrare ai datori di lavoro le tue competenze di programmazione.

CoddyCertificato di completamento
Si certifica cheMario Rossiha completato con successo
python iconFondamenti di Python
Verificato
Datagen 2026
LinkedInAggiungi a LinkedIn

Perché imparare algoritmi e strutture dati in Go su Coddy

  • Le strutture che Go lascia a te. Go integra slice e mappe e si ferma lì: una pila è uno slice a cui fai append e che ritagli, un insieme è una map[T]struct{}, e non esiste alcun tipo coda né albero. Saper scrivere quelli che mancano, e sapere quanto costa ogni operazione sugli slice, fa parte del conoscere Go.
  • Struct e puntatori, niente di nascosto. Go non ha classi: un nodo è una struct con un puntatore al successivo, e i metodi sono agganciati al tipo. Una lista concatenata o un albero appaiono esattamente per ciò che sono, i generics (da Go 1.18) li rendono riutilizzabili per qualsiasi tipo di elemento, e il garbage collector fa sì che non ci siano malloc o free da gestire.
  • Quasi tutto il percorso in Go. Ogni struttura dati, ordinamento, algoritmo sui grafi, sfida di ricorsione e pacchetto da colloquio è insegnato in Go. Tre corsi sono insegnati altrove ed elencati dopo i passaggi con un link a ciascuno: la programmazione dinamica e la serie di colloqui in Python, in Python, e la manipolazione dei bit, in C++. La manipolazione dei bit si legge in modo naturale da Go, che ha gli stessi &, |, ^, << e >> del C++ e scrive il NOT come ^x.
  • Valutato come in un colloquio. Ogni lezione termina con una sfida in Go verificata da casi di test, e quando una fallisce, Bugsy legge il tuo codice e ti indirizza verso la correzione senza darti la risposta. Un certificato gratuito nella maggior parte dei corsi, ognuno verificabile al proprio URL.

Domande frequenti su algoritmi e strutture dati in Go

Go va bene per algoritmi e strutture dati?

Sì. Compila in codice nativo veloce, la sua sintassi è così ridotta che l'algoritmo è quasi tutto ciò che leggi, e i generics (da Go 1.18) rendono riutilizzabile una pila o un heap tipizzati. Il compromesso è una libreria standard essenziale: oltre a slice, mappe, container/list e container/heap, le strutture le scrivi tu, che in un percorso di apprendimento è proprio lo scopo. Go fa anche girare buona parte dell'infrastruttura cloud di oggi, Docker e Kubernetes compresi, il che lo rende un linguaggio naturale per i colloqui backend.

Quali tipi e pacchetti di Go corrispondono a quali strutture dati?

Uno slice è un array dinamico, e con append e il reslicing è anche la tua pila; una mappa è una tabella hash, e map[T]struct{} è l'insieme idiomatico; container/list è una lista doppiamente concatenata; e container/heap gestisce un heap binario su qualsiasi tipo che implementi heap.Interface. Non esistono tipi coda, albero, trie o grafo, quindi quelli li costruisci tu, nel primo e nel secondo passaggio.

Come funziona container/heap in Go?

Implementi heap.Interface su un tuo tipo slice: Len, Less e Swap da sort.Interface, più Push e Pop, che si limitano ad aggiungere e rimuovere dalla fine dello slice. Poi chiami le funzioni del pacchetto heap.Push e heap.Pop, mai i tuoi metodi, e sono loro a spostare gli elementi su e giù per mantenere l'ordine. Sembra strano finché non hai scritto un heap da te, ed è quello che fai nel secondo passaggio.

Perché scorrere una mappa in Go dà un ordine diverso ogni volta?

Perché Go rende casuale apposta l'ordine di iterazione delle mappe, così che nessun programma finisca per dipenderne. Una tabella hash non ha un ordine significativo in nessun linguaggio; Go si assicura solo che tu te ne accorga. Quando l'ordine conta, come in un output confrontato da un test, raccogli le chiavi in uno slice e ordinalo, oppure tieni uno slice accanto alla mappa.

Quali corsi di questo percorso non sono insegnati in Go?

Tre: la programmazione dinamica e la serie di colloqui in Python, insegnate in Python, e la manipolazione dei bit, insegnata in C++. Sono elencati dopo i passaggi, ognuno con un link che lo apre nel suo linguaggio. Una tabella di memoizzazione in Go è uno slice o una mappa, e Go aggiunge un operatore sui bit che il C++ non ha: &^, AND NOT, che azzera nell'operando sinistro ogni bit impostato in quello destro.

Devo conoscere Go prima di iniziare questo percorso?

Almeno struct, puntatori, slice, mappe e metodi; i generics aiutano, e puoi impararli strada facendo. Se sono argomenti nuovi, il corso di Go di Coddy ti porta prima a quel punto, gratis, e questo percorso riprende da dove finisce.

Altri percorsi di apprendimento

Gli stessi corsi, organizzati per un ruolo diverso. I progressi si mantengono: un corso completato in un percorso vale per ogni percorso che lo include.

Tutti i percorsi di apprendimento
Illustrazione dei linguaggi di programmazione di Coddy

Inizia gratis il percorso Algoritmi e strutture dati

Inizia a imparare