Vai al contenuto
eLearner.app
Modulo 1 · Lezione 1 di 51/50 nel corso~10 min
Lezioni del modulo (1/5)

Variabili e tipi

In Go ogni variabile ha un tipo statico noto al compilatore: una volta dichiarata, una variabile non può cambiare tipo. Questa rigidità — molto diversa da JavaScript o Python — è il prezzo da pagare per ottenere errori a compile-time invece che runtime, binari piccoli e performance prevedibili.

Due forme di dichiarazione

var con tipo esplicito

Go
var name string = "Ada"
var age int = 36
var active bool

Quando ometti il valore (come in var active bool) la variabile riceve lo zero value del tipo — torniamo su questo nella prossima lezione.

Dichiarazione corta :=

Dentro a una funzione puoi usare :=, che inferisce il tipo dall'espressione a destra. È la forma idiomatica e quella che userai il 90% delle volte:

Go
name := "Ada"   // string
age := 36        // int
pi := 3.14       // float64
active := true   // bool

I tipi base che incontrerai subito

TipoEsempioNote
int42dimensione dipende dalla CPU (32 o 64 bit)
float643.14default per i letterali decimali
string"Ada"UTF-8, immutabile
booltrue, falseniente "truthy", solo bool puro
rune'A'alias di int32, rappresenta un code point Unicode
byte0x7Falias di uint8

Esistono anche int8/16/32/64, uint8/16/32/64, float32 e complex64/128 per quando ti servono dimensioni precise (parsing binario, interop, ecc.).

Dichiarazioni multiple

Puoi dichiarare più variabili con var-block o := plurale:

Go
var (
    name   string = "Ada"
    age    int    = 36
    active bool
)

x, y := 10, 20
a, b, c := "a", 2, true   // tipi diversi: nessun problema

Variabili dichiarate ma non usate

Go è severo: una variabile dichiarata e mai usata è un errore di compilazione, non un warning. Lo stesso vale per gli import non usati.

Go
func main() {
    x := 42
    // errore: x declared and not used
}

Per silenziare temporaneamente la regola si usa _ (blank identifier):

Go
_ = x

Prova tu

Esercizio#go.m1.l1.e1
Tentativi: 0Caricamento…

Dichiara con var una variabile name di tipo string con valore 'Ada' e stampala.

Caricamento editor…
Mostra suggerimento

La forma estesa è `var <nome> <tipo> = <valore>`.

Soluzione disponibile dopo 3 tentativi

Esercizio#go.m1.l1.e2
Tentativi: 0Caricamento…

In una sola riga, usa := per assegnare 36 a age e 'Roma' a city, poi stampa entrambe.

Caricamento editor…
Mostra suggerimento

Puoi assegnare più variabili contemporaneamente: `a, b := 1, "due"`.

Soluzione disponibile dopo 3 tentativi

Quiz#go.m1.l1.e3
Pronto

Quale di queste dichiarazioni produce un errore di compilazione se messa al di FUORI di una funzione?

Go
// (a)
var name string = "Ada"

// (b)
age := 36

// (c)
const PI = 3.14
Opzioni di risposta

Recap

  • Tipo statico, inferito automaticamente da := o dichiarato con var.
  • := solo dentro funzioni; a package level solo var/const.
  • Variabili e import inutilizzati = errore di compilazione: usa _ per silenziare.
  • int/float64/string/bool coprono il 90% dei casi quotidiani.