Вопросы с собеседований по Go и ответы на них.
Учиться у нас: clc.to/iEeaZw
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
Наши каналы: https://t.me/proglibrary/9197
Post #1448
1.19K
❓Как узнать, сколько элементов лежит в канале
Функция
Пример с буферизированным каналом:
Для небуферизированного канала обе функции всегда дают ноль, потому что у него нет буфера, где данные могли бы задержаться.
Значение
🐸 Библиотека Go для собеса
Функция
len(ch) возвращает количество элементов, которые сейчас лежат в буфере канала. Функция cap(ch) возвращает вместимость буфера, то есть сколько элементов канал может хранить, не блокируя отправителя.Пример с буферизированным каналом:
ch := make(chan int, 5)
ch <- 1
ch <- 2
fmt.Println(len(ch)) // 2
fmt.Println(cap(ch)) // 5
Для небуферизированного канала обе функции всегда дают ноль, потому что у него нет буфера, где данные могли бы задержаться.
ch := make(chan int)
fmt.Println(len(ch)) // 0
fmt.Println(cap(ch)) // 0
Значение
len(ch) это снимок состояния на конкретный момент. Пока вы читаете результат и что-то с ним делаете, другая горутина уже могла записать или забрать элемент.🐸 Библиотека Go для собеса
- ❤ 4






