Junior — Middle
Koji se preporučeni pristupi i prakse koriste prilikom rada sa kontekstom i metodom context.WithValue?
sobes.tech АИ
Одговор од АИ
При раду са контекстом у Go и коришћењу context.WithValue, важно је запамтити следеће препоруке:
- Контекст је намењен за пренос сигнала отказа, рокова и ограничених информација везаних за захтев.
- Користите
context.WithValueсамо за пренос података који су потребни током целог живота захтева и који нису погодни као експлицитни параметри функције. - Кључеви за
WithValueтреба да буду јединствени и непублични типови како би се избегли сукоби. Обично се креира сопствени тип кључа. - Не чувајте у контексту велике објекте или податке који могу довести до цурења меморије.
Пример коришћења кључа:
package main
import (
"context"
"fmt"
)
type ctxKey string
func main() {
кључ := ctxKey("userID")
ctx := context.WithValue(context.Background(), кључ, 42)
userID := ctx.Value(кључ).(int)
fmt.Println("ID корисника из контекста:", userID)
}
На овај начин, контекст служи за пренос метаподатака и управљање животним циклусом операција, а не за чување стања апликације.