// Package router ... // // Description : router ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2024-07-20 21:39 package router import ( "fmt" "reflect" "github.com/gin-gonic/gin" ) var ( ginRouter = gin.Default() ) func init() { } // Register 注册路由 // // Author : go_developer@163.com<白茶清欢> // // Date : 21:40 2024/7/20 func Register(port int, controllerList ...any) { for _, controller := range controllerList { if nil == controller { // 忽略空指针 continue } } } // parseController 解析controller // // Author : go_developer@163.com<白茶清欢> // // Date : 22:10 2024/7/20 func parseController(controller any) { controllerType := reflect.TypeOf(controller) controllerValue := reflect.ValueOf(controller) routerPrefix := "/" // 解析路由前缀函数 // routerPrefix 不能有任何入参, 并且只能有一个返回值, // 返回值类型为字符串, 为具体路由前缀 routerPrefixFunc, routerPrefixFuncExist := controllerType.MethodByName(PrefixFuncName) if routerPrefixFuncExist { routerPrefixFuncType := routerPrefixFunc.Type if routerPrefixFuncType.NumIn() == 1 && // 无任何入参, 正在没有如何入参情况下, 第一个参数是结构体指针 routerPrefixFuncType.NumOut() == 1 && // 只能有一个返回值 routerPrefixFuncType.Out(0).Kind() == reflect.String { // 返回值必须是字符串 routerPrefix = routerPrefixFunc.Func.Call([]reflect.Value{controllerValue})[0].String() // .Call(nil)[0].String() } // 请求组的中间件 /*routerMiddlewareFunc := controllerType.MethodByName(MiddlewareFuncName) routerMiddlewareFuncType := routerMiddlewareFunc.Type() if routerMiddlewareFuncType.NumIn() == 0 && // 无需任何参数 routerMiddlewareFuncType.NumOut() == 1 && // 只能有一个返回值 routerMiddlewareFuncType.Out(0).String() == "[]gin.HandlerFunc" { // 返回值必须是gin.HandlerFunc }*/ } fmt.Println(routerPrefix) }