package task type Pool struct { // 容量 capacity int // 终止信号 terminateSignal chan error // 全部任务完成的信号 finishSignal chan bool } type Worker interface { Do() error } func (pool *Pool) Submit(worker Worker) { err := worker.Do() if err != nil { close(pool.terminateSignal) } }