半年前写过一些 go 代码,当时见到过双重 select 技巧,现在忘了,有大哥知道的能说说吗,结构大概是下面这样
func twork(job <-chan string, st <-chan int) {
defer wg.Done()
for {
select {
case s, ok := <-job:
if ok {
fmt.Println("job:", s)
} else {
return
}
case sti, ok := <-st:
if ok {
if sti == 2 {
fmt.Println("return channel")
return
} else if sti == 1 {
fmt.Println("type 1")
continue
}
} else {
return
}
default:
select {
case sti, ok := <-st:
do something
}
}
}
}
查了半天没查到类似的代码,能解释一下应用场景是什么吗
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.