Go Programming (GPROGG)

Il corso approfondirà le basi della programmazione in Go per arrivare alla realizzazione di applicazioni concorrenti e altamente scalabili: dal setup dell'ambiente locale, alla scrittura del codice e al debug, fino alla compilazione e al deploy del codice su diverse piattaforme.


A CHI SI RIVOLGE

Programmatori provenienti dal C/C++, Java, JavaScript o Python che desiderano familiarizzarsi con questo nuovo linguaggio.


PREREQUISITI

Conoscenza dei concetti base della programmazione orientata agli oggetti (concetti di classe, ereditarietà) in un qualsiasi linguaggio di programmazione.


CONTENUTI

Introduzione a Go e Ambiente di Sviluppo

  • Introduzione a Go: Storia, caratteristiche principali e vantaggi
  • Installazione e configurazione dell'ambiente di sviluppo (Go compiler, editor, etc.)
  • Struttura di base di un programma Go: package, import, funzioni principali


Fondamenti del Linguaggio Go

  • Tipi di dati di base: numerici, stringhe, booleani
  • Dichiarazione di variabili e costanti
  • Strutture di controllo: if, else, switch, loop
  • Funzioni: definizione, argomenti, valori restituiti, funzioni anonime


Array, Slice e Map

  • Array e slice: definizione, inizializzazione, accesso agli elementi, manipolazione
  • Map: concetto, creazione, manipolazione


Strutture di Dati Avanzate

  • Struct: definizione, campi, metodi
  • Interfacce: definizione, implementazione implicita e esplicita
  • Pointer: concetto, utilizzo, differenze rispetto ai valori


Programmazione Concorrente

  • Goroutine: concetto, creazione, gestione
  • Canali (channels): concetto, creazione, utilizzo per la comunicazione tra goroutine
  • Sincronizzazione: utilizzo di WaitGroups e Mutex per la sincronizzazione tra goroutine


Testing e Documentazione

  • Testing in Go: utilizzo del pacchetto testing, scrittura di test unitari
  • Documentazione: utilizzo di commenti per generare documentazione con go doc e godoc
  • Best practices per la scrittura di codice Go leggibile e manutenibile


Progetti Pratici e Revisione Finale

  • Sviluppo di progetti pratici per applicare le conoscenze acquisite durante il corso
  • Revisione finale dei concetti principali e delle best practices del linguaggio Go
  • Discussione su risorse e community per continuare l'apprendimento di Go