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ł?

questionAnswers(4)

yourAnswerToTheQuestion