Sobes.tech
Junior — Middle

Co się stanie w programie, jeśli spróbujesz odczytać z zamkniętego kanału w Go?

sobes.tech AI

Odpowiedź od AI

Jeśli spróbujesz odczytać z zamkniętego kanału w Go, operacja odczytu zwróci wartość zerową typu kanału i false w drugim zwracanym wyniku, jeśli używasz składni z dwoma wartościami zwrotnymi:

v, ok := <-ch

Tutaj ok będzie false, co oznacza, że kanał jest zamknięty i nie będzie już danych.

Jeśli odczytasz z zamkniętego kanału bez sprawdzania ok, otrzymasz wartość zerową typu kanału (np. 0 dla int).

Ważne: odczyt z zamkniętego kanału nie blokuje się i nie wywołuje paniki, tylko natychmiast zwraca wartość zerową i false.