case <- time.After(time.Second): 这个case会在for的每次迭代判断一次,每次判断都先执行time.After(time.Second)这条语句,这条语句每次都返回一个新的信道,也就是说这个case每次都在等待接收新的信道的数据,永远不可能等到。
你的意图是等待旧的信道返回数据,应该把time.After(time.Second)拿到for循环之外,赋给一个变量比如ch := time.After(time.Second),然后在case里写 case <- ch