Почему горутины считаются быстрыми

«Почему горутины считаются быстрыми» — вопрос из категории Golang, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Горутины легковесны (2–8 КБ стека) и работают поверх потоков ОС (M:N модель).
Плюсы:

  • Создаются быстро (нет накладных расходов на системные вызовы).
  • Переключение между ними дешевле, чем у потоков (пользовательский планировщик Go).
  • Масштабируются на тысячи параллельных задач без нагрузки на ОС.

Пример:

func main() {
    for i := 0; i < 1000; i++ {
        go func(id int) {
            fmt.Println("Goroutine", id)
        }(i)
    }
    time.Sleep(time.Second) // Даём время на вывод
}

Нюанс: если горутины блокируются (I/O, мьютексы), эффективность падает.