Ticker Stop comportement à Golang

Si je suis en allant sur un ticker canal et appelle stop() la chaîne est arrêtée, mais pas fermé.

Dans cet Exemple:

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)
}

Cours d'exécution produit:

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

De sorte que goroutine jamais quitte. Est-il une meilleure façon de gérer ce cas? Dois-je prendre soin que la goroutine jamais quitté?

source d'informationauteur whatupdave