直接上代码
package main
import(
"fmt"
"time"
"sync"
)
// panic recover
// WaitGroup
func show( version int32, wg *sync.WaitGroup){
defer func(){
err := recover()
if err != nil {
fmt.Println(err, " panic occour ")
}
}()
showt(version, wg)
}
func showt( version int32, wg *sync.WaitGroup){
defer func(){
wg.Done()
}()
for i:=0;i<4;i++{
if i==2 && version==1 {
panic("hehe panic")
}
fmt.Println(version, " version, i=", i)
time.Sleep(time.Second )
}
}
func f7(ch chan int ){
defer func(){
ch <- 1
}()
var wg sync.WaitGroup ;
wg.Add(2)
go show(1,&wg)
go show(2,&wg)
wg.Wait()
}
func f8(){
//fmt.Println(f4(0,2))
ch := make(chan int )
go f7( ch )
//var i int = 0
<-ch
}
func main(){
f8()
fmt.Println("hello world")
}
运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/43c7b65329548807432cb56766c58aa2.png)