我一个接口里边,需要多次操作数据库,现在想通过协程来实现。 下边这个 demo 是一个样例, 我在 resp 怎么区分协程的返回值,这里边还有些不太清晰。
func main() {
var ch = make(chan []byte)
go request("https://www.baidu.com", ch)
go request("https://www.taobao.com", ch)
go request("https://www.google.com", ch)
i := 0
timer := time.NewTimer(time.Second * 3)
L:
for {
select {
case <-timer.C:
break L
case resp := <-ch:
fmt.Printf("%d\n", len(resp))
// 接收 3 个之后关闭 chan
i++
if i == 3 {
close(ch)
break L
}
}
}
// more code...
}