1 回答

TA貢獻1836條經(jīng)驗 獲得超4個贊
完成發(fā)送值后關閉通道:
func processEven(inputs []int) chan int {
evenValues := make(chan int)
var wg sync.WaitGroup
for _, num := range inputs {
wg.Add(1)
go func(num int) {
defer wg.Done()
if num%2 == 0 {
evenValues <- num
}
}(num)
}
go func() {
wg.Wait()
close(evenValues)
}()
return evenValues
}
該代碼使用WaitGroup來等待發(fā)送者完成。
循環(huán)接收值直到通道關閉:
func main() {
inputs := []int{1, 17, 34, 56, 2, 8}
evenCh := processEven(inputs)
for num := range evenCh {
fmt.Println(num)
}
}
通道上的范圍循環(huán),直到通道關閉。
- 1 回答
- 0 關注
- 99 瀏覽
添加回答
舉報