Sobes.tech
Middle+

Bir yapıyı context.WithValue aracılığıyla bağlam içine koymak mümkün mü?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, Go'da context.WithValue kullanarak bir yapıyı bağlam içine yerleştirebilirsiniz. Ancak, bağlamın istekle ilgili verileri iletmek için tasarlandığını, örneğin zaman aşımı, zaman sınırları ve meta veriler gibi, ve büyük veya değiştirilebilir yapıları iletmek için değil, hatırlamak önemlidir.

Örnek:

type User struct {
    ID   int
    Name string
}

ctx := context.Background()
user := &User{ID: 1, Name: "Alice"}
ctx = context.WithValue(ctx, "user", user)

// Çekme
u, ok := ctx.Value("user").(*User)
if ok {
    fmt.Println(u.Name)
}

Anahtar türlerinin, çakışmaları önlemek için, diğer paketlerle çakışmayan kendi anahtar türleri gibi, kullanılması önerilir.