Sobes.tech
Senior

Go'da kontekst nima va nima uchun kerak?

sobes.tech AI

AIdan javob

Go'da context — bu paket va tur, u ishlash davomida bekor qilish signallari, vaqt chegaralari va boshqa muhim ma'lumotlarni goroutine'lar o'rtasida uzatish uchun ishlatiladi.

context ning asosiy vazifalari:

  • Vaqt o'tishi yoki foydalanuvchi tomonidan bekor qilingan taqdirda operatsiyalarni bekor qilish imkonini beradi (masalan, ma'lumotlar bazasi yoki HTTP so'rovlarida).
  • Operatsiyalar uchun vaqt chegaralarini (deadlines) uzatadi.
  • Funktsiyalar o'rtasida qiymatlarni (masalan, so'rov identifikatorlari) uzatishga imkon beradi.

Foydalanish misoli:

ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()

select {
case result := <-doWork(ctx):
    fmt.Println("Natija:", result)
case <-ctx.Done():
    fmt.Println("Operatsiya bekor qilindi yoki vaqt o'tdi")
}

Bu yerda, ctx doWork funksiyasiga uzatiladi va u kontekst bekor qilinsa yoki vaqt o'tib ketsa, o'z ishini to'xtatishi mumkin. Bu, operatsiyalar va resurslarning umrini boshqarishda yordam beradi.