01 · Basi
- var / := / const
- tipi base
- zero value
- package main
Fine del Corso Go
Complimenti: hai attraversato i 10 moduli del Corso Go — dalle prime var e := fino a goroutine, channel, generics, e un piccolo server HTTP idiomatico. 10 moduli, 50 lezioni, 150 esercizi: il tuo Go ora copre tutti gli idiomi che incontri davvero in un progetto reale. Qui sotto la mappa di quello che padroneggi e una sfida finale in tre tappe.
Promemoria: gli esercizi Go si verificano staticamente (parole chiave). Per eseguire il codice davvero, ogni esercizio offre il bottone Apri su Go Playground che copia il codice e apre go.dev/play.
Immagina un piccolo strumento che riceve testo, lo analizza, ed espone un endpoint HTTP con il risultato in JSON. Costruisci i tre pezzi: il filtro slice, l'aggregatore con map e un handler HTTP. Ogni tappa combina concetti dei moduli che hai studiato — niente di nuovo, solo idiomi conosciuti messi insieme.
Scrivi Pari(nums []int) []int: ritorna solo i numeri pari, nello stesso ordine. Modulo 4 (slice) + Modulo 2 (for-range / if).
Definisci func Pari(nums []int) []int che ritorna solo i numeri pari di nums, mantenendo l'ordine. Usa for-range, l'operatore %% (resto) e append.
for _, n := range nums; if n%2 == 0 { out = append(out, n) }.
Soluzione disponibile dopo 3 tentativi
Scrivi Conta(testo string) map[string]int: separa per spazi e ritorna quante volte appare ogni parola. Modulo 8 (strings) + Modulo 4 (map).
Definisci func Conta(testo string) map[string]int che usa strings.Fields per separare per spazi e ritorna una map con il conteggio di ogni parola. Inizializza la map con make(map[string]int) o letterale {}.
out := make(map[string]int); for _, w := range strings.Fields(testo) { out[w]++ }.
Soluzione disponibile dopo 3 tentativi
Definisci un handler che riceve ?q=testo, conta le parole e risponde con JSON. Modulo 10 (HTTP) + Modulo 8 (encoding/json) + Modulo 4 (map).
Definisci func ContaHandler(w http.ResponseWriter, r *http.Request) che: legge il query parameter "q", chiama Conta(q) (gia' importata), imposta Content-Type: application/json e scrive la map come JSON con json.NewEncoder(w).Encode. Modulo 10 (http) + Modulo 8 (json).
r.URL.Query().Get("q"); w.Header().Set("Content-Type", "application/json"); json.NewEncoder(w).Encode(Conta(q)).
Soluzione disponibile dopo 3 tentativi
Una pagina con tutta la sintassi essenziale di Go (1.21+), pronta da tenere sotto mano mentre programmi.
Il modo migliore per consolidare e' pratica libera. Apri il Playground Go (o un tuo progetto con go mod init) e prova a costruire un piccolo strumento end-to-end: una CLI con flag che legge un file, conta le parole ed espone i risultati con un piccolo server HTTP — esattamente i tre pezzi della sfida qui sopra, ma uniti.