Fix "не следует использовать базовую строку типа в качестве ключа в контексте. WallValue" golint

Я передаю uuid при использовании Context и WithValue для последующих функций, которые обрабатывают этот *http.request. Этот uuid передается в заголовке авторизации на вызов REST для идентификации человека. Маркер авторизации проверяется и должен быть доступен для проверки, разрешен ли сам вызов.

Я использовал:

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

Но голинт жалуется:

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

Каков наилучший вариант, который можно было бы использовать для извлечения этого ключа, который не является базовым типом, как простая строка?

Ответ 2

В то время как ответ Ainar концептуально правильный, вот решение, которое я нашел более гибким для моего конкретного случая: https://medium.com/@matryer/context-keys-in-go-5312346a868d#.rvtbo2tei Например, проверьте, как он использует authTokenFromContext (ctx). Ницца!