Ticker Zatrzymaj zachowanie w Golang
Jeśli przechodzę przez kanał ticker i stop (), kanał zostanie zatrzymany, ale nie zamknięty.
W tym przykładzie:
package main
import (
"time"
"log"
)
func main() {
ticker := time.NewTicker(1 * time.Second)
go func(){
for _ = range ticker.C {
log.Println("tick")
}
log.Println("stopped")
}()
time.Sleep(3 * time.Second)
log.Println("stopping ticker")
ticker.Stop()
time.Sleep(3 * time.Second)
}
Uruchomienie powoduje:
2013/07/22 14:26:53 tick
2013/07/22 14:26:54 tick
2013/07/22 14:26:55 tick
2013/07/22 14:26:55 stopping ticker
Żeby goroutine nigdy się nie kończy. Czy jest lepszy sposób na załatwienie tej sprawy? Czy powinienem się martwić, że goroutine nigdy się nie wyszedł?