Senior
Pratikte bağlamları kullandın mı? Anlat.
sobes.tech yapay zeka
AI'dan gelen yanıt
Evet, Go'da bağlamları düzenli olarak kullandım, özellikle zaman aşımı ve ağ istekleri ile goroutine'lerde işlemleri iptal etmek için. Bağlam, iptal sinyallerini ve zaman aşımlarını çağrı zinciri aracılığıyla iletmeye olanak tanır, bu da goroutine sızıntılarını önlemeye ve çalışma süresini kontrol etmeye yardımcı olur.
Kullanım örneği:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case <-time.After(3 * time.Second):
fmt.Println("işlem tamamlandı")
case <-ctx.Done():
fmt.Println("işlem iptal edildi veya zaman aşımına uğradı")
}
Bu şekilde, işlem 2 saniyeden fazla sürerse, iptal edilir, bu da uygulamanın dayanıklılığını ve yanıt verme kabiliyetini artırır.