🌀 Что такое горутина?
Горутина — это лёгкий поток исполнения в 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
. - Очень лёгкие по ресурсам — подходят для масштабируемых приложений.
- Нужно управлять временем жизни горутин, чтобы они не завершались раньше времени.
В следующей главе ты узнаешь, как обмениваться данными между горутинами с помощью каналов.