HTML CSS JAVASCRIPT SQL MYSQL PYTHON JAVA PHP C C++ C# PACKET TRACER CYBERSECURITY REACT TYPESCRIPT NODE.JS GIT & GITHUB DATA SCIENCE BOOTSTRAP GO KOTLIN JQUERYDJANGOVUEANGULAR MONGODB POSTGRESQL SASS NUMPY PANDAS SCIPY DSA RUST SWIFT BASHXMLW3.CSSANGULARJSAIAWSPROGRAMMAZIONEEXCEL WORD POWERPOINT
Corso gratuito · Interattivo

Corso Go (Golang) in italiano

Impara da zero il linguaggio di Google: sintassi pulita, slice, map, struct e funzioni per costruire software backend veloce e moderno.

Cos'è Go

Go (chiamato anche Golang) è un linguaggio di programmazione moderno, creato da Google nel 2009. È compilato, veloce come il C ma semplice da leggere come Python, ed è pensato per costruire software efficiente e scalabile.

Perché imparare Go

  • Veloce: compila in codice macchina nativo
  • 🧹 Semplice: poche parole chiave, sintassi pulita e leggibile
  • 🔀 Concorrenza nativa: le goroutine rendono facile fare più cose insieme
  • ☁️ Cloud e backend: è il linguaggio di Docker, Kubernetes e moltissimi servizi web
  • 💼 Richiestissimo: tra i linguaggi meglio pagati sul mercato
Il classico "Hello World" in Go
📘 Premi ▶ Provalo tu su ogni esempio per leggere e modificare il codice con la sintassi colorata. Per eseguirlo davvero useremo il Go Playground, indicato nel pannello.

Introduzione a Go

Go è nato per risolvere problemi reali di Google: compilazione lenta, codice difficile da mantenere e gestione complicata della concorrenza. Il risultato è un linguaggio minimale ma potente.

Caratteristiche principali

  • Tipizzazione statica: gli errori di tipo si scoprono già in compilazione
  • Garbage collector: gestisce la memoria automaticamente
  • Libreria standard ricca: web server, JSON, crittografia inclusi
  • Un solo eseguibile: il programma compilato non ha dipendenze esterne

Dove si usa Go

Backend di servizi web e API, strumenti per il cloud (Docker, Kubernetes, Terraform sono scritti in Go), microservizi, strumenti da riga di comando e sistemi ad alte prestazioni.

💡 Go è un ottimo secondo linguaggio: se conosci già le basi (magari da Python o C), lo impari in pochissimo tempo.

Iniziare con Go

Per programmare in Go sul tuo computer scarica il compilatore da go.dev/dl. In alternativa, per esercitarti subito senza installare nulla, usa il Go Playground online.

Struttura di un programma Go

Ogni programma Go inizia con un package. Il programma eseguibile usa package main e una funzione main(), il punto di partenza.

Il tuo primo programma, spiegato

Compilare ed eseguire (nel terminale)

Comandi del terminale

La sintassi di Go

Il codice Go è organizzato in modo rigoroso e pulito. Ecco gli elementi che ritroverai in ogni programma.

  • package — dichiara a quale pacchetto appartiene il file
  • import — importa altri pacchetti
  • func — definisce una funzione
  • Le parentesi graffe { } delimitano i blocchi
Anatomia del codice Go
📘 In Go il punto e virgola a fine riga non si scrive: lo aggiunge il compilatore. La parentesi graffa di apertura { deve stare sulla stessa riga di func.

I commenti

I commenti sono note ignorate dal compilatore, utili a spiegare il codice. Go ha due forme, identiche a C, Java e JavaScript.

Commenti su una riga e su più righe

Le variabili

Una variabile è un contenitore con un nome per un valore. In Go si dichiara con var oppure, dentro una funzione, con la forma breve :=.

Dichiarare variabili
📘 La forma breve := funziona solo dentro le funzioni e deduce il tipo dal valore. A livello globale usa sempre var.
⚠️ Go è severo: una variabile dichiarata ma mai usata provoca un errore di compilazione. Niente codice morto!

Le costanti

Una costante è un valore che non può cambiare dopo essere stato definito. Si dichiara con const.

Definire costanti
💡 Usa le costanti per valori fissi (aliquote, limiti, messaggi): rendono il codice più chiaro e impediscono modifiche accidentali.

Stampare a schermo

Il pacchetto fmt offre tre funzioni principali per stampare a schermo.

FunzioneCosa fa
PrintStampa senza andare a capo
PrintlnStampa e va a capo, con spazi tra i valori
PrintfStampa con formattazione (segnaposto)
Le tre funzioni di stampa
📘 I segnaposto di Printf: %s per le stringhe, %d per gli interi, %f per i decimali, %v per qualsiasi valore.

I tipi di dato

Go è tipizzato staticamente: ogni variabile ha un tipo preciso. Ecco i tipi fondamentali.

TipoDescrizioneEsempio
intNumeri interi42, -7
float64Numeri decimali3.14
stringTesto"ciao"
boolVero/falsotrue, false
I tipi fondamentali

Gli array

Un array è una collezione di elementi dello stesso tipo con dimensione fissa, decisa alla creazione.

Creare e usare array
⚠️ La dimensione di un array fa parte del suo tipo e non può cambiare. Per collezioni che crescono si usano le slice (prossima lezione).

Le slice

Una slice è come un array ma di dimensione dinamica: può crescere e rimpicciolirsi. È la struttura più usata in Go.

Slice e append
💡 Regola pratica: usa sempre le slice a meno che tu non abbia un motivo specifico per una dimensione fissa. append è il tuo strumento quotidiano.

Gli operatori

Gli operatori eseguono operazioni su valori: calcoli, confronti e logica.

CategoriaOperatori
Aritmetici+ - * / %
Confronto== != > < >= <=
Logici&& || !
Operatori in azione

Le condizioni (if/else)

Le condizioni eseguono blocchi di codice diversi a seconda che una condizione sia vera o falsa, con if, else if ed else.

if / else if / else
📘 In Go la condizione non va tra parentesi e le graffe sono obbligatorie, anche per una sola riga.

Lo switch

Lo switch sceglie tra molti casi in modo più leggibile di tanti else if. In Go non serve il break: ogni caso si ferma da solo.

Switch su un valore
💡 A differenza di altri linguaggi, in Go i casi non "cadono" sul successivo: niente break da ricordare. Per il comportamento opposto esiste fallthrough.

I cicli (for)

Go ha un solo costrutto di ciclo: for. Ma è flessibile e copre tutti i casi (incluso il classico while di altri linguaggi).

Le forme del for
📘 Il for ... range è il modo idiomatico di scorrere slice, array e map: restituisce indice e valore di ogni elemento.

Le funzioni

Una funzione raggruppa istruzioni riutilizzabili. In Go i tipi dei parametri e del valore restituito si dichiarano esplicitamente.

Definire e usare funzioni
💡 La possibilità di restituire più valori è una caratteristica amata di Go: si usa moltissimo per restituire un risultato e un eventuale errore.

Le struct

Una struct raggruppa più campi correlati in un unico tipo personalizzato: è il modo di Go per rappresentare "oggetti" come una persona, un prodotto, un punto.

Definire e usare una struct
📘 Le struct sono il cuore di Go: non c'è la parola class, ma combinando struct e metodi si ottiene tutto ciò che serve della programmazione a oggetti.

Le map

Una map associa chiavi a valori (come un dizionario): perfetta per cercare un valore tramite un nome.

Creare e usare una map
💡 La forma valore, esiste := mappa[chiave] è il modo sicuro di controllare se una chiave c'è prima di usarla.

Certificazione Go

Una certificazione su Go attesta la tua capacità di scrivere software backend efficiente e moderno: una competenza molto richiesta e ben pagata, soprattutto unita a un portfolio di progetti reali.

CertificazioneEnteNote
Go CertificateW3SchoolsBase, ottima per il CV
Google Cloud (Go)GooglePer backend e cloud su GCP
Il tuo portfolioProgetti su GitHub valgono piu' di ogni badge

Come prepararsi

  • 📐 Padroneggia slice, map, struct e funzioni a piu' valori di ritorno
  • 🔀 Approfondisci goroutine e canali (la concorrenza di Go)
  • 🛠️ Costruisci una piccola API web con la libreria standard net/http
  • 🟩 Pubblica i tuoi progetti su GitHub

Compilatore Go online

Ogni esempio del corso ha il pulsante ▶ Provalo tu: apre un editor dove leggere e modificare il codice con la sintassi colorata. Per compilarlo ed eseguirlo davvero, usa uno di questi strumenti gratuiti.

Dove eseguire il codice Go

  • 🎮 Go Playground — scrivi ed esegui Go nel browser, senza installare nulla: il modo più rapido per esercitarti
  • 💻 Go ufficiale — installa il compilatore sul tuo computer per i progetti veri
  • 📚 A Tour of Go — il tutorial interattivo ufficiale
Copia questo nel Go Playground

Esercizi Go

Esercizi pratici progressivi. Svolgili nell'editor Provalo tu e poi eseguili sul Go Playground.

Livello base

  1. Stampa il tuo nome e la tua età con Printf
  2. Dichiara due numeri e stampa somma, differenza e prodotto
  3. Crea una slice di 3 città e stampala con un ciclo for-range
  4. Scrivi un if che dica se un numero è pari o dispari

Livello intermedio

  1. Scrivi una funzione che restituisce il maggiore tra due numeri
  2. Usa una map per associare 3 nomi alle loro età
  3. Scrivi uno switch che traduca un numero da 1 a 7 nel giorno della settimana
  4. Crea una struct Prodotto con nome e prezzo, e stampane una

Livello avanzato

  1. Scrivi una funzione che restituisce quoziente e resto di una divisione
  2. Calcola la media dei valori di una slice di interi
  3. Conta quante volte ogni parola appare in una slice, usando una map
  4. Crea una slice di struct Persona e stampa solo i maggiorenni
🎯 Sfida

Scrivi un piccolo programma "rubrica": usa una map[string]string per associare nomi a numeri di telefono, con funzioni per aggiungere, cercare ed eliminare un contatto. È un ottimo modo per mettere insieme map, funzioni e cicli.

Come funziona il compilatore Go

A differenza di Python o JavaScript (interpretati), Go è compilato: il codice sorgente viene tradotto in un eseguibile in codice macchina, velocissimo e senza dipendenze esterne.

I comandi del compilatore
📘 go fmt riformatta il codice secondo lo stile ufficiale: in Go non si discute di stile, è uno solo per tutti. Un grande vantaggio per i team.

Programma del corso

La mappa completa di ciò che copre questo corso, dalle basi alle strutture dati.

  • Fondamenti: sintassi, package, commenti, variabili, costanti, output
  • Tipi e dati: tipi di base, array, slice, map, struct
  • Logica: operatori, condizioni, switch, cicli for
  • Organizzazione: funzioni e valori di ritorno multipli

Piano di studio

Go si impara in fretta, soprattutto se conosci già un altro linguaggio. Questo piano ti porta da zero all'autonomia in 2-3 settimane.

PeriodoObiettivo
Giorni 1-3Installazione/Playground, sintassi, variabili, output
Giorni 4-6Tipi di dato, operatori, condizioni, switch
Giorni 7-9Cicli for, array, slice
Giorni 10-12Funzioni, map, struct
Settimana 3Progetto pratico + primo sguardo a goroutine e net/http
💡 Affianca al corso A Tour of Go: è interattivo e copre gli stessi argomenti con altri esempi, ottimo per consolidare.

Domande da colloquio

Go è sempre più richiesto per ruoli backend e cloud. Queste sono le domande più frequenti ai colloqui.

  • 🔹 Qual è la differenza tra un array e una slice?
  • 🔹 Cosa significa che Go è compilato e tipizzato staticamente?
  • 🔹 Come si restituiscono più valori da una funzione?
  • 🔹 Cosa sono le goroutine e i canali?
  • 🔹 Perché in Go non c'è la parola chiave class?
  • 🔹 Come si gestiscono gli errori in Go (il pattern value, err)?
  • 🔹 Cosa fa go fmt e perché è importante?
  • 🔹 Differenza tra var e :=
💡 Punto chiave: Go nasce per la semplicità e la concorrenza. Saper spiegare goroutine e canali, e il pattern di gestione degli errori, fa un'ottima impressione.

Quiz Go

Verifica le tue conoscenze. Le risposte sono in fondo.

  1. Quale package deve avere un programma eseguibile in Go?
  2. Qual è la differenza tra var e :=?
  3. Cosa succede se dichiari una variabile e non la usi?
  4. Qual è la differenza tra array e slice?
  5. Quale funzione aggiunge un elemento a una slice?
  6. Quanti costrutti di ciclo ha Go?
  7. Serve il break nei casi di uno switch?
  8. Come si restituiscono due valori da una funzione?
  9. Cosa raggruppa una struct?
  10. Come si controlla se una chiave esiste in una map?
📘 Risposte: 1) package main. 2) var funziona ovunque ed è esplicito; := è la forma breve solo dentro le funzioni, con tipo dedotto. 3) Errore di compilazione. 4) L'array ha dimensione fissa, la slice è dinamica. 5) append. 6) Uno solo: for. 7) No, ogni caso si ferma da solo. 8) Dichiarando due tipi di ritorno, es. (int, int). 9) Più campi correlati in un tipo personalizzato. 10) Con valore, esiste := mappa[chiave].

Conclusione — E ora?

Hai completato il corso Go! Ora conosci sintassi, tipi, slice, map, struct, funzioni e tutto ciò che serve per scrivere programmi reali in uno dei linguaggi più moderni e richiesti.

I tuoi prossimi passi

  • 🔀 Concorrenza: impara goroutine e canali, il vero superpotere di Go
  • 🌐 Web: costruisci la tua prima API REST con il pacchetto net/http
  • 🐳 Cloud: Go è il linguaggio di Docker e Kubernetes, esploralo in quel mondo
  • 🟩 Portfolio: pubblica i tuoi progetti su GitHub
🎯 La tua sfida finale

Scrivi un programma da riga di comando completo: un "gestore di attività" (to-do list) che permette di aggiungere, elencare e completare attività, salvandole in una slice di struct. Aggiungi un menu con uno switch e funzioni separate per ogni azione. Pubblicalo su GitHub: sarà il primo progetto Go del tuo portfolio.

✏️ Provalo tu — leggi e modifica il codice Go
Anteprima