【发布时间】:2020-01-10 17:55:25
【问题描述】:
我想在某些情况下将频道替换为新频道,例如:
package main
import (
"log"
"time"
)
func subMsg(s string) chan string {
ch := make(chan string)
go func() {
ticker := time.NewTicker(time.Second * 2)
for range ticker.C {
ch <- s
}
}()
return ch
}
func main() {
chStr := subMsg("hello")
go func() {
i := 0
for s := range chStr {
log.Print(s)
i++
if i > 5 {
log.Print("new topic")
i = 0
chStr = subMsg("world")
}
}
}()
select {}
}
我希望这段代码 sn-p 输出 5 个“hello”,然后是“world”,但它并没有这样工作。我不太清楚重新分配频道时发生了什么。有什么建议吗?
【问题讨论】: