Comportamento Ticker Stop em Golang

Se eu estiver passando por um canal de discagem e chamando stop (), o canal está parado, mas não fechado.

Neste exemplo:

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

A execução produz:

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

Então essa goroutine nunca sai. Existe uma maneira melhor de lidar com este caso? Eu deveria me importar que a goroutine nunca saísse?

questionAnswers(4)

yourAnswerToTheQuestion