Нет, нет способа перечислить все ключи context.Context
.Потому что этот тип просто интерфейс.Так что это значит?
В общем случае переменные могут содержать конкретный тип или интерфейс.Переменная с типом интерфейса не имеет никакой конкретной информации о типе.Так что не имеет значения, если интерфейс пуст (interface{}
) или context.Context.Потому что они могут быть разных типов, которые реализуют этот интерфейс.Переменная не имеет конкретного типа.Это просто что-то абстрактное.
Если вы используете отражение, вы можете наблюдать поля и все методы типа, который установлен в этой переменной (с типом интерфейса).Но логика реализации метода Value(key interface{}) interface{}
не является фиксированной.Это не обязательно должна быть карта.Вы также можете сделать реализацию со срезами, базой данных, собственным типом хеш-таблицы, ...
Так что нет общего способа перечислить все значения.