我一个接口里边,需要多次操作数据库,现在想通过协程来实现。 下边这个 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...
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.