package routine type options[T any] struct { workers int capacity int taskFn func(T) panicHandler func(any) } // Option function type Option[T any] func(*options[T]) // setOptions 设置默认值 func setOptions[T any](opt ...Option[T]) options[T] { opts := options[T]{ workers: 1, capacity: 1, } for _, o := range opt { o(&opts) } return opts } // WithWorkers 设置协程数 func WithWorkers[T any](workers int) Option[T] { if workers <= 0 { workers = 1 } return func(o *options[T]) { o.workers = workers } } // WithCapacity 设置任务队列容量 func WithCapacity[T any](capacity int) Option[T] { if capacity <= 0 { capacity = 1 } return func(o *options[T]) { o.capacity = capacity } } // WithTaskFn 设置任务函数 func WithTaskFn[T any](taskFn func(T)) Option[T] { return func(o *options[T]) { o.taskFn = taskFn } } // WithPanicHandler 设置panic处理函数 func WithPanicHandler[T any](panicHandler func(any)) Option[T] { return func(o *options[T]) { o.panicHandler = panicHandler } }