Sobes.tech
Junior — Middle

Co się stanie, jeśli spróbujesz odczytać dane z kanału, który nie został jeszcze zainicjalizowany?

sobes.tech AI

Odpowiedź od AI

Jeśli spróbujesz odczytać dane z kanału w Go, który nie został zainicjalizowany (czyli jest nil), operacja odczytu zablokuje się na zawsze. Spowoduje to, że goroutine próbująca czytać z takiego kanału się zawiesi, ponieważ kanał nie istnieje i nie może przekazywać danych.

Przykład:

var ch chan int // ch jest nil

func main() {
    fmt.Println(<-ch) // blokuje się na zawsze
}

Aby tego uniknąć, kanał należy zainicjalizować za pomocą make, na przykład: ch := make(chan int).