Back to questions
МТС Digital
Junior — Middle
88
Какое возможное состояние могут занимать каналы при их использовании или в процессе работы?
Companies where asked
Answer from AI
sobes.tech AI
Каналы в Go могут находиться в следующих состояниях:
- Открытый (open) — канал доступен для отправки и получения данных.
- Закрытый (closed) — канал закрыт с помощью функции
close(). После закрытия нельзя отправлять данные, но можно продолжать получать уже отправленные значения до опустошения канала. - Заблокированный (blocked) — горутина, пытающаяся отправить или получить данные, может быть заблокирована, если канал заполнен (для буферизированных) или пуст (для небезуферных).
Пример:
ch := make(chan int, 1) // буферизированный канал
ch <- 1 // отправка значения
close(ch) // закрываем канал
v, ok := <-ch // получаем значение, ok == true
v2, ok2 := <-ch // канал пуст, ok2 == false
Таким образом, состояние канала влияет на поведение операций отправки и получения.