Я хочу, чтобы иметь возможность передать имя функции gin.Engine route handler. У меня есть следующий код;вызов функции с карты [строка] интерфейс {} путем предоставления ключа
// status service
type StatusService struct {
App *gin.Engine
}
func (s *StatusService) Ping(ctx *gin.Context) {
ctx.JSON(200, gin.H{
"message": "pong",
})
}
app := gin.Default()
// define services
statusService := &services.StatusService{
App: app,
}
ss := make(map[string]interface{})
ss["auth"] = statusService
app.GET("/ping", ss["auth"].Ping)
Компилятор выдает следующую ошибку;
./app.go:60: ss["auth"].Ping undefined (type interface {} has no field or method Ping)
Любые идеи о том, как исправить это?
ну, мне не нужно определять структуру карты. Я могу инициализировать var и передать его функцию 'app.GET()'. Удобнее ли это использовать? – aacanakin
btw, 'ss [" auth "]. (Func (ctx * gin.Context)). Ping' не работает – aacanakin
@aacanakin да, было одно, что я действительно не замечал, что у вас есть тип 's * StatusService' для' Ping', поэтому вам действительно нужен тип assert для этого. Я обновлю этот пример. – evanmcdonnal