-2
我希望能夠將函數名稱傳遞給gin.Engine路由處理程序。我有以下代碼;從地圖[字符串]接口{}通過給定鍵調用函數
// 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是的,有一件事我沒有注意到,那就是你有一個接收''Status *'類型爲'Ping',所以你實際上需要爲這個類型聲明assert。我會更新這個例子。 – evanmcdonnal