Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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

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

大佬总结

以上是大佬教程为你收集整理的golang 函数-defer-recover-panic全部内容,希望文章能够帮你解决golang 函数-defer-recover-panic所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。