golang channal问题请教
本文介绍了golang channal问题请教的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
package main
import (
"fmt"
)
func main() {
resultChan := make(chan int)
for i := 1; i <= 10; i++ {
go func(resultChan chan int) {
//收集结果,比如接口调用的返回的结构,存入channal中
resultChan <- 1
}(resultChan)
}
//存放resultChan中的值
var res []int
/*
for {
select {
case tmp := <-resultChan:
res = append(res, tmp)
}
}
*/
//问题? 如何将resultChan中的值全部收集到res变量中???
fmt.Println(res)
}
解决方案
按我的理解,我写的代码。。
package main
import (
"fmt"
"sync"
)
func main() {
resultChan := make(chan int)
var wg sync.WaitGroup
for i := 1; i <= 10; i++ {
wg.Add(1)
go func(resultChan chan int) {
defer wg.Done()
//收集结果,比如接口调用的返回的结构,存入channal中
resultChan <- 1
}(resultChan)
}
//存放resultChan中的值
var res []int
go func() {
wg.Wait()
close(resultChan)
}()
for tmp := range resultChan {
res = append(res, tmp)
}
fmt.Println(res)
}
这篇关于golang channal问题请教的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文