【发布时间】:2017-06-28 03:12:09
【问题描述】:
package main
import (
"fmt"
"time"
)
func main() {
intChan := make(chan int, 1)
ticker := time.NewTicker(time.Second)
go func() {
for _ = range ticker.C {
select {
case intChan <- 1:
case intChan <- 2:
case intChan <- 3:
}
}
/*defer */
fmt.Println("End. [sender]")
}()
var sum int
for e := range intChan {
fmt.Printf("Received: %v\n", e)
sum += e
if sum > 10 {
fmt.Printf("Got: %v\n", sum)
break
//ticker.Stop()
}
}
fmt.Println("End. [receiver]")
//time.Sleep(10)
}
我是 golang 的新手。在这段代码中,我想在 goroutine 结束时打印一次“End. [sender]”。 我尝试使用ticker.stop(),甚至time.sleep(),defer,但没有效果。 有什么问题,请给我一些想法。谢谢
【问题讨论】: