管道的注意事项和细节3

package main

import (
“time”
“fmt”
)

//3)使用select可以解决从管道取数据得阻塞问题[案例演示]
//4)goroutine中使用recover,解决协程中出现panic,导致程序崩溃问题[案例演示]

/*
说明:如果我们起了一个协程,但是这个协亨出现了panic,如果我们没有捕获这个panic,就会造成整个程序崩溃,这时我们可以再goroutine中使用recover来捕获panic,进行处理,这样即使这个协程发生得问题,但是主线程仍然不受影响,可以继续前行。
*/
//函数
func sayHello(){
for i:=0;i<10;i++{
time.Sleep(time.Second)
fmt.Println(“hello,world”)
}
}
//函数
func test(){
//这里我们可以使用defer+recover
defer func() {
//捕获test抛出得panic
if err := recover();err!=nil{
fmt.Println(“test()发生错误”,err)
}
}()
//定义了一个map
var myMap map[int]string
myMap[0]=“golang”//error
}
func main(){
go sayHello()
go test()

for i:=0;i<10;i++{
	fmt.Println("main()ok=",i)
	time.Sleep(time.Second)
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值