[英]Getting go-gin's handlerFunc of a pointer receiver using reflect
我在使用反射獲取 HandlerFunc 時遇到問題。
下面是我的代碼:
type ServiceHandler struct {
Name string
}
var handler *ServiceHandler
func init() {
handler = ServiceHandler{Name: "test"}
}
func (handler *ServiceHandler) Handler1(c *gin.Context) {
...
}
func (handler *ServiceHandler) Handler2(c *gin.Context) {
...
}
到現在為止還挺好。 現在,我使用反射來列出我所有的方法並將它們傳遞給 gin 路由器。
func listHanlderMethods() {
handlerType := reflect.TypeOf(handler)
for i := 0; i < handlerType.NumMethod(); i++ {
method := handlerType.Method(i)
fmt.Println(method.Name)
}
}
這給了Handler1和Handler2 。
我的問題在這里:
如何通過反射獲得 HandlerFunc ?
使用該值查找方法。 使用類型斷言查找與 gin 處理程序簽名匹配的方法。
v := reflect.ValueOf(handler)
for i := 0; i < v.NumMethod(); i++ {
if h, ok := v.Method(i).Interface().(func(*gin.Context)); ok {
// Do something with h
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.