我試圖了解 goroutine 和通道是如何工作的。我有一個循環(huán)向通道發(fā)送值,我想遍歷通道發(fā)送的所有值,直到它關(guān)閉。我在這里寫了一個簡單的例子:package mainimport ( "fmt")func pinger(c chan string) { for i := 0; i < 3; i++ { c <- "ping" } close(c)}func main() { var c chan string = make(chan string) go pinger(c) opened := true var msg string for opened { msg, opened = <-c fmt.Println(msg) }}這給出了預(yù)期的結(jié)果,但我想知道是否有更短的方法來做到這一點(diǎn)。非常感謝您的幫助
1 回答

瀟湘沐
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個贊
您可以range在頻道上使用。循環(huán)將繼續(xù),直到通道根據(jù)需要關(guān)閉:
package main
import (
"fmt"
)
func pinger(c chan string) {
for i := 0; i < 3; i++ {
c <- "ping"
}
close(c)
}
func main() {
var c chan string = make(chan string)
go pinger(c)
for msg := range c {
fmt.Println(msg)
}
}
- 1 回答
- 0 關(guān)注
- 174 瀏覽
添加回答
舉報
0/150
提交
取消