大佬教程收集整理的这篇文章主要介绍了golang 函数-defer-recover-panic,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1、函数的定义
packagemain import"fmt" funcadd(aint,bint)int{//当函数参数类型相同时,除最后一个外其他类型可省略。 //add(aint,bint)==add(a,bint) returna+b } funcmain(){ fmt.Println(add(1,2)) } //执行结果: #gorunfunc.go 3
2、函数的多返回值
packagemain import"fmt" funcadd(a,bint)(int,int){ returna+b,a-b } funcmain(){ fmt.Println(add(1,2)) } //执行结果:3-1
3、函数的匿名返回值
packagemain import"fmt" funcadd(a,bint)(x,yint){ x=a+b y=a-b return//返回值定义返回x,y因此return后面可省略 } funcmain(){ fmt.Println(add(1,2)) }
4、函数不定长参数
packagemain import"fmt" funcadd(a,yint){ x=a+b y=a-b return } funcsum(args...int)int{ final:=0 for_,value:=rangeargs{//当遍历时索引信息不需要可以用"_"来代替. final+=value } returnfinal } funcmain(){ fmt.Println(add(1,2)) fmt.Println(sum(1,2,3,4,5,6)) } //执行结果: 3-1 21
packagemain import"fmt" funcadd(a,bint)int{ num:=1 sub:=func()int{ num-=1 returnnum } fmt.Println(sub()) returna+b } funcmain(){ fmt.Println(add(1,2)) } //执行结果: 0 3
defer
packagemain import"fmt" funcclean(){ fmt.Println("dosomethinginclean") } funcmain(){ deferclean() fmt.Println("endmain") } //执行结果: endmain dosomethinginclean
recover
1、当程序出错时,可以通过recover来捕捉
packagemain import"fmt" funcsafeDivision(a,bint)int{ deferfunc(){ fmt.Println(recover()) }() v:=a/b returnv } funcmain(){ safeDivision(1,0) fmt.Println("endmain") } //执行结果: runtimeerror:Integerdividebyzero endmain
panic
1、可以通过panic来抛出异常,通过recover来捕捉
packagemain import"fmt" funcdemPanic(){ deferfunc(){ fmt.Println(recover()) }() panic("PANIC") } funcmain(){ demPanic() fmt.Println("endmain") } //执行结果: PANIC endmain
以上是大佬教程为你收集整理的golang 函数-defer-recover-panic全部内容,希望文章能够帮你解决golang 函数-defer-recover-panic所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。