不适用 for 循环的话使用 注释部分select 在 select 中区分 取消和超时的操作 package main import ( bytes context fmt io os time ) func main() { var res = make(chan string) var cancelSignal = make(chan string) go func() { // 捕获 输入窗口的取消信号 signal := make([]byte, 1) signalBuffer := bytes.NewBuffer(signal)