加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读