golang 函数-defer-recover-panic
发布时间:2020-12-16 18:18:44 所属栏目:大数据 来源:网络整理
导读:函数 1、函数的定义 packagemainimport"fmt"funcadd(aint,bint)int{//当函数参数类型相同时,除最后一个外其他类型可省略。//add(aint,bint)==add(a,bint)returna+b}funcmain(){fmt.Println(add(1,2))}//执行结果:#gorunfunc.go3 2、函数的多返回值 packagem
函数 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 5、函数嵌套函数 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 1、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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |