È il panic più frequente in Go: si verifica quando si tenta di accedere a un campo, invocare un metodo o leggere la memoria attraverso un puntatore che vale 'nil'; si previene verificando 'if ptr != nil'.
PANIC_NIL_POINTER
→
Tentare di inviare un valore attraverso un canale precedentemente chiuso con 'close(ch)' provoca un panic immediato del runtime; per convenzione in Go solo il mittente deve chiudere il canale.
PANIC_SEND_CLOSED_CHAN
→
L'errore a runtime si manifesta quando l'operazione di sub-slicing 's[low:high]' specifica un valore 'high' superiore alla capacità (cap) della slice originale.
PANIC_SLICE_BOUNDS
→
A differenza di linguaggi come Python, in Go non sono consentiti indici negativi per indicizzare o affettare slice o stringhe ('s[:-1]'); qualsiasi valore negativo solleva un panic immediato.
PANIC_SLICE_NEGATIVE_INDEX
→
La funzione 'unsafe.Slice(ptr, len)' introdotta in Go 1.17 genera un panic a runtime se il puntatore raw è 'nil' e la lunghezza richiesta è strettamente maggiore di zero.
PANIC_UNSAFE_SLICE_NIL
→
La funzione di recupero 'recover()' ha effetto solo se invocata direttamente all'interno di una funzione differita ('defer func() { r := recover() }()'); chiamarla in una normale istruzione restituisce costantemente 'nil' e non arresta la propagazione del panic.
PANIC_RECOVER_OUTSIDE_DEFER
→