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
}
}
}
我想问问, 能不能有更简介明了的办法去实现。