1 回答

TA貢獻1811條經驗 獲得超4個贊
你的程序永遠不會退出的原因是 Go 語言的一個奇怪的怪癖:breakfor 語句case <-quit退出select語句,而不是循環(huán)。(不知道為什么這種行為會有用。)要修復你的程序,你需要顯式地打破循環(huán):
tickLoop:
for a := range tick.C {
select {
case <-quit:
break tickLoop
default:
fmt.Println(a, "function #", id) // do something on tick
}
}
在編寫代碼時,它總是等到下一個時鐘周期才退出。tick.C您也可以通過讀取 select 語句來解決此問題:
tickLoop:
for {
select {
case <-quit:
break tickLoop
case a := <-tick.C:
fmt.Println(a, "function #", id) // do something on tick
}
}
最后,如果您想重組程序以僅使用一個股票代碼,您可以啟動一個額外的 goroutine,它監(jiān)聽股票代碼和通道quit,然后N在每個股票代碼時啟動子 goroutine。
- 1 回答
- 0 關注
- 129 瀏覽
添加回答
舉報