1
我天真地寫了一段代碼來改變time.Ticker
的間隔,在回顧這我惱火的是它的工作原理:意外行爲
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(5 * time.Second)
switcher := time.NewTimer(16 * time.Second)
for {
select {
case <-ticker.C:
fmt.Println("ticker " + time.Now().Format("15:04:05"))
case <-switcher.C:
fmt.Println("switching")
ticker = time.NewTicker(1 * time.Second)
}
}
}
$去運行,main.go
股票2時19分03秒
股票2點19分08秒
股票二點19分13秒
切換
股票2點十九分15秒
抽動KER二時十九分16秒
股票2時19分十七秒
據我想要做什麼,即ticker
北京時間頻率切換至一個第二個16秒後。但是,再次閱讀我預計在16秒後,會創建一個新的Ticker對象,而select
語句保留對舊通道的引用,從而防止垃圾收集並保持每五秒鐘滴答。
那麼爲什麼這段代碼改變了股票的頻率?