Непосредственной причиной паники является то, что обработчик ошибок вызывается в «стандартном» контексте.Чтобы сделать ваше утверждение типа безопасным, используйте форму с двумя значениями:
e.HTTPErrorHandler = func(err error, c echo.Context) {
cc, ok := c.(*CustomContext)
if ok {
// A CustomContext was received
} else {
// Something else, probably a standard context, was received
}
}
Но, в общем, то, что вы делаете (используя пользовательский тип контекста), вероятно, плохая идея.Если вы объясните, что вы пытаетесь выполнить, возможно, есть лучший, более надежный способ решения этой проблемы.
Одной из очевидных альтернатив будет использование стандартных контекстов Go, предоставляемых через echo через c.Request().Context()
.