package app import ( "context" "fmt" ) // ReadinessChecker 定义统一的就绪检查能力。 type ReadinessChecker interface { Ready(ctx context.Context) error } type readinessGroup struct { checkers []namedChecker } type namedChecker struct { name string check func(context.Context) error } // newReadinessGroup 创建一个按顺序执行的就绪检查器组合。 func newReadinessGroup(checkers ...namedChecker) ReadinessChecker { return readinessGroup{checkers: checkers} } // Ready 逐个执行检查,只要有一个失败就返回未就绪。 func (g readinessGroup) Ready(ctx context.Context) error { for _, checker := range g.checkers { if err := checker.check(ctx); err != nil { return fmt.Errorf("%s not ready: %w", checker.name, err) } } return nil }