Sobes.tech
Junior — Middle

Bağlam, bileşenler veya fonksiyonlar arasında veri iletmek için kullanılabilir mi?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, (context.Context) bağlam, iptal sinyalleri, zaman aşımı ve istek veya işlemle ilgili değerleri, goroutine'ler ve fonksiyonlar arasında iletmek için tasarlanmıştır. Ancak, bağlamın, bileşenler veya fonksiyonlar arasında rastgele veriler iletmek için kullanılması önerilmez.

Nedenler:

  • Bağlam, yalnızca işlemin yaşam döngüsü ile ilgili verileri içermelidir (örneğin, zaman aşımı, iptaller).
  • İş mantığı verilerini bağlam aracılığıyla iletmek, kodu karmaşıklaştırır ve okunabilirliği azaltır.

Doğru yaklaşım, gerekli verileri fonksiyon parametreleri aracılığıyla açıkça iletmek veya veri alışverişi için diğer yapıları kullanmaktır.

İşte, isteğe bağlı olarak, isteğe bağlı bir değer iletmek için bağlam kullanımına bir örnek:

ctx := context.WithValue(context.Background(), "userID", 12345)
userID := ctx.Value("userID")

Ancak, bu yaklaşım, işlemin yaşam döngüsünü yönetmek için gerçekten gerekmedikçe, bileşenler arasında veri iletimi için kullanılmamalıdır.