Sobes.tech
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, что позволяет определить конец данных.