Junior — Middle
Welk gedrag wordt verwacht bij het proberen te lezen uit een kanaal met een buffer die op dit moment leeg is?
sobes.tech AI
Antwoord van AI
При попытке чтения из канала с буфером в Go, если буфер пуст, операция чтения блокируется до тех пор, пока в канал не будет записано новое значение. Это поведение обеспечивает синхронизацию между горутинами: читающая горутина ждёт, пока другая горутина не отправит данные.
Пример:
ch := make(chan int, 2) // буфер на 2 элемента
// Чтение из пустого канала
val := <-ch // блокируется, пока кто-то не запишет значение
Если канал закрыт и буфер пуст, чтение вернёт нулевое значение типа и false, что позволяет определить конец данных.