👁 Go подходит для создания высокопроизводительных приложений с асинхронной обработкой данных. Goroutines и channels ускоряют параллельную отправку API-запросов.
📝 Пример автоматизации обработки нескольких API-запросов:
package main
import (
"fmt"
"net/http"
"sync"
)
func fetchData(url string, wg *sync.WaitGroup, ch chan<- string) {
defer wg.Done()
resp, err := http.Get(url)
if err != nil {
ch <- fmt.Sprintf("Error fetching %s: %s", url, err)
return
}
ch <- fmt.Sprintf("Successfully fetched %s: %d", url, resp.StatusCode)
}
func main() {
urls := []string{
"https://jsonplaceholder.typicode.com/posts/1",
"https://jsonplaceholder.typicode.com/posts/2",
"https://jsonplaceholder.typicode.com/posts/3",
}
var wg sync.WaitGroup
ch := make(chan string, len(urls))
for _, url := range urls {
wg.Add(1)
go fetchData(url, &wg, ch)
}
wg.Wait()
close(ch)
for msg := range ch {
fmt.Println(msg)
}
}📌 Как это работает:
- В примере создаются
goroutinesдля отправки запросов к нескольким API-эндпоинтам параллельно, что позволяет существенно снизить время выполнения. - Для синхронизации запросов используется
sync.WaitGroup, который отслеживает завершение всех горутин. Channelприменяется для получения и обработки результатов выполнения каждой горутины.
❗️ Идеально подходит для автоматизации в проектах, где необходимо параллельно собирать данные с разных источников или выполнять множество однотипных операций.
tags: #go #автоматизация #разработка



