Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: select, channel, timeout, goroutines

Как работает Select?

Этот вопрос проверяет знание механизма select, который позволяет обрабатывать данные из нескольких каналов.

Короткий ответ

select в Go используется для выбора одного из доступных каналов, готовых к отправке или получению данных. Он блокируется до тех пор, пока хотя бы один канал не станет доступным, или выполняет случайный выбор, если доступно несколько каналов.

Длинный ответ

select — это конструкция управления для работы с несколькими каналами одновременно. Он похож на switch, но работает только с каналами.

Пример использования:

ch1 := make(chan int)
ch2 := make(chan int)

go func() { ch1 <- 1 }()
go func() { ch2 <- 2 }()

select {
case val := <-ch1:
    	fmt.Println("Получено из ch1:", val)
case val := <-ch2:
    	fmt.Println("Получено из ch2:", val)
default:
    	fmt.Println("Ни один канал не готов")
}

Особенности:

  • select блокируется, если нет доступных каналов.

  • Если несколько каналов готовы, выбор происходит случайно.

  • Блок default выполняется, если ни один канал не готов.

В каких случаях использовать:

  • При обработке данных из нескольких каналов.

  • Для организации таймаутов.

  • Для предотвращения блокировки при отсутствии данных.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#select

#channel

#timeout

#goroutines

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.