我在使用反射獲取 HandlerFunc 時(shí)遇到問題。下面是我的代碼:type ServiceHandler struct { Name string}var handler *ServiceHandlerfunc init() { handler = ServiceHandler{Name: "test"}}func (handler *ServiceHandler) Handler1(c *gin.Context) { ...}func (handler *ServiceHandler) Handler2(c *gin.Context) { ...}到現(xiàn)在為止還挺好?,F(xiàn)在,我使用反射來列出我所有的方法并將它們傳遞給 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 ?
1 回答

MM們
TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個贊
使用該值查找方法。使用類型斷言來查找與 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
}
}
- 1 回答
- 0 關(guān)注
- 133 瀏覽
添加回答
舉報(bào)
0/150
提交
取消