🌀 Что такое горутина?

Горутина — это лёгкий поток исполнения в Go. Они позволяют выполнять несколько задач параллельно. Запускаются при помощи ключевого слова go.

Пример:

func sayHello() {
    fmt.Println("Привет!")
}

func main() {
    go sayHello() // запускается как горутина
    fmt.Println("Главная функция")
}

⚠️ Программа может завершиться до того, как sayHello успеет выполниться. Подробнее об этом — ниже.


⚙️ Особенности горутин

  • Очень лёгкие — тысячи горутин могут работать одновременно.

  • Не требуют явного завершения. Они завершаются, когда заканчивается их функция.

  • Запускаются функцией go, за которой следует вызов:

    go myFunc()
    
  • Работают параллельно, но не обязательно одновременно (зависит от планировщика Go).


🕰 Пример с ожиданием

Чтобы убедиться, что горутина успела выполниться, можно использовать time.Sleep (не лучший способ, но наглядный):

func main() {
    go sayHello()
    time.Sleep(time.Second) // ждём завершения горутины
}

📌 Главные идеи

  • Горутины позволяют выполнять код параллельно.
  • Запускаются с помощью ключевого слова go.
  • Очень лёгкие по ресурсам — подходят для масштабируемых приложений.
  • Нужно управлять временем жизни горутин, чтобы они не завершались раньше времени.

В следующей главе ты узнаешь, как обмениваться данными между горутинами с помощью каналов.