package main
import (
"fmt"
)
func main(){
var str = []string {"1", "2", "1","1", "2","1", "2", "1","1", "2","1", "2", "1","1", "2","1", "2", "1","1", "2", "0", "6","9","4"}
for _, t := range str {
switch t {
case "1":
go go1(t)
case "2":
go go2(t)
default:
//
}
}
fmt.Println("hello")
}
func go1(st string) {
//逻辑处理
fmt.Println(st)
}
func go2(st string){
//逻辑处理
fmt.Println(st)
}
我开启 2 个 goroutine , 但是我不知道如何做堵塞,确保 2 个 goroutine 都运行完后在退出主 goroutine 。开始的时候我用 channel 加 计数器去实现,这样的话就需要给函数添加一个参数:
func go1(st string, ch chan bool){
//逻辑处理
}
func go2(st string, ch chan bool){
//逻辑处理
}
func main(){
//省略一些代码
for {
<- ch
t ++
if t >= len(str) {
break
}
}
}
我想问问, 能不能有更简介明了的办法去实现。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.