下面是一個例子:如何在同一個循環內向/從通道發送和接收值?
func main() {
c := make(chan int)
i := 0
go goroutine(c)
c <- i
time.Sleep(10 * time.Second)
}
func goroutine(c chan int) {
for {
num := <- c
fmt.Println(num)
num++
time.Sleep(1 * time.Second)
c <- num
}
}
我試圖夠程中執行的任務是從通道接收號碼,打印,增量和一個後第二次發回的通道。在此之後,我想重複這一行動。
但是,結果是,操作只進行一次。
輸出:
0
我做錯什麼了嗎?
謝謝大家了詳細的解釋。 – RhinoLarva
請注意,在啓動第二個goroutine後,您的最後一個'main()'函數會返回,因此程序可能會立即退出(它不會等待非'main' goroutine完成)。它可能是'pump()'而'receive()'甚至不會被調用。 – icza