Junior — Middle
Ինչ վարքագիծ է սպասվում, երբ փորձում եք կարդալ բացասական բուֆերով ալիքից, որը ներկայումս դատարկ է:
sobes.tech AI
Պատասխան AI-ից
При попытке чтения из канала с буфером в Go, если буфер пуст, операция чтения блокируется до тех пор, пока в канал не будет записано новое значение. Это поведение обеспечивает синхронизацию между горутинами: читающая горутина ждёт, пока другая горутина не отправит данные.
Пример:
ch := make(chan int, 2) // буфер на 2 элемента
// Чтение из пустого канала
val := <-ch // блокируется, пока кто-то не запишет значение
Если канал закрыт и буфер пуст, чтение вернёт нулевое значение типа и false, что позволяет определить конец данных.