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 функциясы так бир жолу чакырылат, горутиндердин санына карабастан.