Junior — Middle
Czym różni się otrzymanie wartości zerowej z zamkniętego kanału od otrzymania takiej samej wartości przy samodzielnym tworzeniu kanału i wysyłaniu danych?
sobes.tech AI
Odpowiedź od AI
W Go, podczas odczytu z kanału, jeśli kanał jest zamknięty i nie ma więcej danych, operacja odczytu zwraca wartość zerową typu kanału i false w drugiej wartości zwracanej (jeśli używasz składni v, ok := <-ch). Sygnałizuje to, że kanał jest zamknięty i nie będzie więcej danych.
Jeśli jednak utworzysz kanał, wyślesz do niego wartość zerową i odczytasz ją, operacja odczytu zwróci tę wartość zerową, ale ok będzie true, ponieważ kanał jest otwarty i dane zostały odebrane.
Podsumowanie:
- Zamknięty kanał bez danych: odczyt zwraca wartość zerową +
ok == false. - Otwartym kanał z wartością zerową: odczyt zwraca wartość zerową +
ok == true.
To pozwala odróżnić rzeczywistą wartość zerową od sygnału zamknięcia kanału.