package main
import "fmt"
import "time"
func main() {
ticker := time.NewTicker(time.Millisecond * 500)
go func() {
for t := range ticker.C {
fmt.Println("Tick at", t)
}
fmt.Println("ticker stopped")
}()
time.Sleep(time.Second * 5)
ticker.Stop()
time.Sleep(time.Second * 5)
}
我以为当我打电话给ticker.Stop()时,ticker.C应该告诉goroutine它已经结束,所以for循环应该结束,但它看起来不像那样,字符串“ticker stopped”从不打印。股票代码告诉goroutine它是通过它的ticker.C停止的吗?
从文档:'停止不关闭channel' – JimB