Sobes.tech
Junior — Middle

Go tilida 'Once' tushunchasini tushuntirib bera olasizmi va qaysi hollarda qo'llaniladi?

sobes.tech AI

AIdan javob

Go tilida, sync.Once — bu ma'lum bir funksiyaning faqat bir marta bajarilishini ta'minlaydigan tuzilma, hatto chaqiriq bir vaqtning o'zida bir nechta gorutinlardan bo'lsa ham. Bu, ma'lumotlar bazasi bilan ulanishni o'rnatish yoki konfiguratsiyani yuklash kabi, faqat bir marta yaratilishi kerak bo'lgan resurslarni boshlash uchun foydalidir.

Foydalanish misoli:

var once sync.Once

func initialize() {
    fmt.Println("Boshlash tugallandi")
}

func main() {
    for i := 0; i < 5; i++ {
        go func() {
            once.Do(initialize)
        }()
    }
    time.Sleep(time.Second) // Gorutinlarning tugashini kutish
}

Ushbu misolda, initialize funksiyasi aniq bir marta chaqiriladi, gorutinlar sonidan qat'i nazar.