L'identificatore speciale 'iota' per la generazione automatica di valori progressivi può essere utilizzato solo all'interno di blocchi 'const (...)'; il suo uso in 'var' o all'interno di funzioni genera errore.
IOTA_OUTSIDE_CONST
→
Go possiede un sistema di tipi rigido e statico senza conversioni implicite: anche se due tipi condividono lo stesso underlying type (es. type MyInt int vs int), è richiesta una conversione esplicita MyInt(x).
CANNOT_USE_TYPE
→
Nelle versioni precedenti a Go 1.22, la variabile di iterazione del ciclo 'for' veniva riutilizzata ad ogni passaggio; avviare una goroutine 'go func() { println(v) }()' faceva sì che tutte le goroutine leggessero l'ultimo valore assunto da 'v'.
LOOP_VARIABLE_CAPTURE
→
Inizializzare una struct esportata specificando solo i valori per posizione ('pkg.Config{10, "prod"}') genera avvisi ed è fragile: l'aggiunta futura di nuovi campi nella libreria romperà la compilazione; usare sempre la forma con chiavi esplicite ('pkg.Config{Timeout: 10, Env: "prod"}').
UNKEYED_STRUCT_LITERAL
→
L'errore compare quando un valore numerico costante supera l'intervallo massimo rappresentabile dal tipo di destinazione a tempo di compilazione (es. int su architettura 32-bit o int64).
CONSTANT_OVERFLOW
→
La conversione '(*[4]byte)(slice)' richiede che la slice contenga almeno 4 elementi; se 'len(slice) < 4', il runtime genera un panic immediato.
SLICE_TO_ARRAY_CONVERSION
→
Il compilatore Go rileva e vieta espressioni o tipi duplicati nei rami 'case' di un costrutto switch ordinario o type switch.
REPEATED_CASE_SWITCH
→
Go impedisce la compilazione se un pacchetto importato non viene referenziato nel codice sorgente; per mantenere l'import solo per i suoi side-effect (es. driver SQL) si antepone il blank identifier '_ "package"'.
IMPORTED_NOT_USED
→