Назад к вопросам
Junior
121
questionbank

Какие операции можно выполнять с каналами в Go?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

  • Отправка (<-chan)
  • Получение (chan<-)
  • Закрытие (close)
  • Проверка на закрытие (второе возвращаемое значение при получении)
  • Использование в select
  • Определение буферизации (с помощью cap)
  • Определение текущего количества элементов (с помощью len)

Пример:

// Создание буферизованного канала
ch := make(chan int, 5)

// Отправка значения
ch <- 10

// Получение значения
val := <-ch

// Проверка на закрытие при получении
val, ok := <-ch

// Закрытие канала
close(ch)

// Использование в select
select {
case msg1 := <-ch1:
	// обработка сообщений из ch1
case msg2 := <-ch2:
	// обработка сообщений из ch2
default:
	// нет доступных сообщений
}

// Определение буферизации
bufferSize := cap(ch)

// Определение текущего количества элементов
currentElements := len(ch)