Sobes.tech
Middle+

Կարո՞ղ է կառուցվածքը տեղադրել կոնտեքստում՝ օգտագործելով context.WithValue։

sobes.tech AI

Պատասխան AI-ից

Այո, Go-ում դուք կարող եք տեղադրել կառուցվածք context.WithValue-ի միջոցով։ Սակայն կարևոր է հիշել, որ կոնտեքստը նախատեսված է հարցման հետ կապված տվյալների փոխանցման համար, ինչպիսիք են ժամանակային սահմանափակումները, ժամկետները և մետադատները, և ոչ մեծ կամ փոփոխական կառուցվածքների փոխանցման համար։

Օրինակ՝

type User struct {
    ID   int
    Name string
}

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

// Հետազոտում
u, ok := ctx.Value("user").(*User)
if ok {
    fmt.Println(u.Name)
}

Առաջարկվում է օգտագործել այնպիսի բանալիների տեսակներ, որոնք չեն բախվում այլ փաթեթների հետ, օրինակ՝ սեփական բանալի տեսակներ, որպեսզի խուսափել բախումներից։