👁 Если вам нужно выполнять несколько операций одновременно и эффективно управлять параллельностью, то горутины и каналы в Go — это то, что нужно. Горутину можно запустить в один момент, а каналами удобно управлять синхронизацией данных между ними.
📝 Пример кода:
package main
import (
"fmt"
"time"
)
func fetchData(id int, ch chan string) {
time.Sleep(2 * time.Second) // эмуляция задержки
ch <- fmt.Sprintf("Data from goroutine %d", id)
}
func main() {
ch := make(chan string, 3) // канал для трёх сообщений
for i := 1; i <= 3; i++ {
go fetchData(i, ch) // запускаем горутину
}
// Получаем и выводим результаты
for i := 1; i <= 3; i++ {
fmt.Println(<-ch) // блокирует, пока не получит сообщение
}
}📌 Как это работает:
- Горутины — с помощью
goперед функцией запускаем параллельное выполнение - Каналы —
chиспользуется для передачи данных между горутинами - Функция
fetchDataотправляет результат в канал после симуляции задержки - В
main()собираем результаты с помощью блокирующего оператора<-ch
❗️ Это решение идеально подходит для задач, требующих одновременной обработки нескольких операций, таких как сбор данных с разных источников или асинхронное выполнение HTTP-запросов.
tags: #go #разработка
❤️ @recura_tech



