go golint

La solución "no debe usar una cadena de tipo básico como clave en el contexto. ConValor" golint



(1)

Estoy pasando un uuid en el uso de Context y WithValue para las siguientes funciones que manejan este *http.request . Este uuid se pasó en el encabezado de autorización a una llamada REST para identificar a una persona. El token de autorización se verifica y debe ser accesible para verificar si la llamada está autorizada.

Solía:

ctx := context.WithValue(r.Context(), string("principal_id"), *id)

Pero Golint se queja:

should not use basic type string as key in context.WithValue

¿Cuál es la mejor opción que podría usarse para recuperar esta clave que no es un tipo básico como una cadena simple?


Solo usa un tipo de clave:

type key int const ( keyPrincipalID key = iota // ... )

Ya que ha definido un tipo separado, nunca colisionará. Incluso si tiene dos paquetes, pkg1.key(0) != pkg2.key(0) .

Ver también: Go Blog sobre colisiones clave en contexto .