package app import ( "context" "github.com/labstack/echo/v4" "sync" ) type Context struct { context.Context prefix string store map[any]any router *echo.Group mu sync.RWMutex } // Prefix 设置路由前缀 func (c *Context) Prefix(prefix string) { c.mu.Lock() defer c.mu.Unlock() if c.prefix != "" { panic("already prefixed") } c.prefix = prefix } // Routes 注册路由 func (c *Context) Routes(routes Routable) { c.mu.Lock() defer c.mu.Unlock() routes.InitRoutes(c.router) } // Set 设置值 func (c *Context) Set(key, val any) { c.mu.Lock() defer c.mu.Unlock() c.store[key] = val } // Get 获取值,只会获取通过 Set 方法设置的值 func (c *Context) Get(key any) (any, bool) { c.mu.RLock() defer c.mu.RUnlock() val, ok := c.store[key] return val, ok } // Value 获取值 func (c *Context) Value(key any) any { if val, ok := c.Get(key); ok { return val } return c.Value(key) }