Sobes.tech
Junior — Middle

Loyihalaringizda error.Group yordamida xatoliklarni qanday boshqarishni amalga oshirganingiz haqida misol bilan bo'lisha olasizmi?

sobes.tech AI

AIdan javob

Go paketidagi errors bilan Group turi (masalan, golang.org/x/sync/errgroup dan) parallel gorutinlarda yuzaga keladigan bir nechta xatoliklarni qulay yig‘ish va ishlash imkonini beradi.

errgroup.Group dan foydalanib, vazifalarni parallel bajarish va xatoliklarni boshqarish misoli:

import (
    "fmt"
    "golang.org/x/sync/errgroup"
)

func processTasks() error {
    var g errgroup.Group

    vazifalar := []func() error{
        func() error { /* vazifa 1 */ return nil },
        func() error { /* vazifa 2 */ return fmt.Errorf("2-vazifada xato") },
        func() error { /* vazifa 3 */ return nil },
    }

    for _, vazifa := range vazifalar {
        v := vazifa
        g.Go(func() error {
            return v()
        })
    }

    if err := g.Wait(); err != nil {
        // Birinchi yuzaga kelgan xatoni ishlash
        return err
    }
    return nil
}

Loyihalarimda, errgroup dan foydalanib, bir nechta mustaqil operatsiyalarni parallel tarzda boshlash va xatoliklarni tartibli yig‘ish uchun ishlatganman, bu kodni soddalashtiradi va o‘qilishi yaxshilanadi.