Sobes.tech
Junior — Middle

Go тилиндеги 'Once' концепциясын түшүндүрө аласызбы жана кайсы учурларда колдонулат?

sobes.tech AI

AIден жооп

Go тилинде, sync.Once структурасы белгилүү бир функцияны гана бир жолу ишке ашырууну кепилдейт, эгер ал чакыруу бир убакта бир нече горутинден болсо да. Бул ресурстарды бир жолу гана түзүү керек болгон учурларда пайдалуу, мисалы, базага туташуу орнотуу же конфигурацияны жүктөө.

Колдонуу мисалы:

var once sync.Once

func initialize() {
    fmt.Println("Баштоо аяктады")
}

func main() {
    for i := 0; i < 5; i++ {
        go func() {
            once.Do(initialize)
        }()
    }
    time.Sleep(time.Second) // Горутиндердин аяктоосун күтүп жатабыз
}

Бул мисалда, initialize функциясы так бир жолу чакырылат, горутиндердин санына карабастан.