Senior
Co się dzieje podczas zapisywania do niezainicjalizowanego (nil) kanału?
sobes.tech AI
Odpowiedź od AI
W Go, zapisanie do niezainicjalizowanego (nil) kanału powoduje trwałe zablokowanie goroutine, ponieważ nil-kanał nie jest gotowy do przyjmowania ani wysyłania danych.
Przykład:
var ch chan int // ch == nil
func main() {
ch <- 1 // blokuje się na zawsze, ponieważ kanał jest nil
}
To zachowanie jest czasami używane do dynamicznego włączania/wyłączania kanałów w select, ponieważ operacje na nil-kanale nigdy nie są wykonywane i blokują goroutine.