Le mappe native di Go non sono thread-safe: l'accesso simultaneo di lettura e scrittura da due goroutine distinte innesca un controllo interno di coerenza del runtime che arresta il processo senza possibilità di recupero con recover(); richiede 'sync.RWMutex' o 'sync.Map'.
PANIC_CONCURRENT_MAP_RW
→
Due o più goroutine tentano di inserire o cancellare chiavi nella medesima istanza di 'map' contemporaneamente; a differenza di altri panic, questo errore fatale del runtime non può essere intercettato da 'recover()' e termina immediatamente il programma.
PANIC_CONCURRENT_MAP_WRITES
→
Benché le goroutine abbiano stack dinamici a crescita automatica, una funzione ricorsiva priva di condizione di terminazione supera il limite di guardia (default 1GB su 64-bit) causando l'uscita forzata.
FATAL_STACK_OVERFLOW
→
La funzione 'json.Marshal()' fallisce quando la struttura o i puntatori da serializzare contengono un riferimento circolare (es. nodo genitore che punta al figlio e viceversa), provocando un loop infinito di serializzazione.
PANIC_JSON_CYCLE
→
In Go la lettura da una mappa nil restituisce il valore zero senza errori, ma la scrittura ('m[key] = val') innesca un panic fatale; le mappe devono essere sempre inizializzate con 'make(map[K]V)'.
PANIC_NIL_MAP
→
Le regole di sicurezza di Cgo vietano il passaggio a codice C di puntatori Go che a loro volta contengono altri puntatori gestiti dal garbage collector di Go, per prevenire corruzione della memoria durante lo spostamento dello stack.
PANIC_CGO_POINTER_VIOLATION
→
Invocare 'close(ch)' su un canale già chiuso innesca un panic fatale; la chiusura deve avvenire una sola volta, coordinata tramite sync.Once o appositi pattern.
PANIC_CLOSE_CLOSED_CHAN
→
Tentare di chiudere un canale non inizializzato il cui valore è 'nil' (dichiarato con 'var ch chan int' senza 'make') genera un panic immediato.
PANIC_CLOSE_NIL_CHAN
→