Sobes.tech
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.