⚙️ Почему параллелизм важен?
Go был создан с прицелом на высокопроизводительные, конкурентные приложения. Его легковесные горутины и каналы делают параллельное программирование проще, чем в большинстве языков.
Go был создан с прицелом на высокопроизводительные, конкурентные приложения. Его легковесные горутины и каналы делают параллельное программирование проще, чем в большинстве языков.
🌀 Что такое горутина? Горутина — это лёгкий поток исполнения в Go. Они позволяют выполнять несколько задач параллельно. Запускаются при помощи ключевого слова go. Пример: func sayHello() { fmt.Println("Привет!") } func main() { go sayHello() // запускается как горутина fmt.Println("Главная функция") } ⚠️ Программа может завершиться до того, как sayHello успеет выполниться. Подробнее об этом — ниже. ⚙️ Особенности горутин Очень лёгкие — тысячи горутин могут работать одновременно. Не требуют явного завершения. Они завершаются, когда заканчивается их функция. ...
🔗 Что такое канал? Каналы — это способ обмена данными между горутинами. Они позволяют синхронизировать выполнение и передавать значения. Объявление канала: ch := make(chan int) // канал для передачи int 📤 Отправка и приём Отправка значения в канал: ch <- 42 Приём значения из канала: value := <-ch Эти операции блокируются, пока другая сторона не выполнит противоположную операцию. 🧵 Пример: обмен значением func worker(ch chan string) { msg := <-ch fmt.Println("Получено:", msg) } func main() { ch := make(chan string) go worker(ch) ch <- "Привет, горутина!" time.Sleep(time.Second) } 📚 Буферизированные каналы Можно создать канал с буфером: ...