Go函数相关知识分享

Go函数相关知识分享

一、init函数

1、特点:会在main函数执行之前被Go的运行框架所运行

package main 
import (
	"fmt"
)
//init在main前面运行,可以数据初始化
func init(){
   fmt.Println("init打印")  //类似与构造函数
}
func main(){
   fmt.Println("main打印")
}

上述代码输出结果为:
在这里插入图片描述
2、作用:完成一些初始化赋值的工作
3、注意事项:init函数在全局变量执行后执行
main.go调用util.go的时候,且都拥有全局变量以及init函数时的执行顺序
在这里插入图片描述
二、匿名函数

1、定义:匿名函数就是没有名字的函数

2、使用方式

匿名函数的使用方式一(只调用一次该函数)

func main(){
    res:=func (n1 int,n2 int) int {
          return n1+n2
    }(10,20)
    fmt.Println("res=",res)
}

匿名函数的使用方式二(将函数赋值给变量,通过该变量来调用匿名函数)

func main(){
    a:=func (n1 int,n2 int) int {
          return n1+n2
    }
    res:=a(10,20)
    fmt.Println("res=",res)
}

3 、全局匿名函数
将匿名函数的使用方式二定义到全局变量中,即a为全局匿名函数,在该包内的子函数都可以调用该匿名函数。

三、函数的错误处理
背景:
1、在默认情况下,出现panic错误,程序就会退出(崩溃),我们希望可以捕获错误,程序仍然可以继续运行。
2、由于Go语言追求美观,所以不在使用传统的try...catch...,所以引入defer,panicrecover,当Go中抛出一个panic的异常,然后在defer中通过recover捕获这个异常,在正常处理。

func testError(){   
   defer func(){
   	err:=recover() //内置函数捕获异常
   	if err!=nil{
   		fmt.Println("err=",err)
   		fmt.Println("发送信息给管理员")
   	}
   }()   //这里将错误信息发送信息
   num:=1
   num2:=0
   res:=num/num2    //0不能做分母,这个是必错的代码
   fmt.Println(res)
}

3、自定义错误

erroes.New(“错误说明”);返回一个erroe类型的值,表示一个错误,然后panic接收,输出错误信息,并且退出程序,在错误代码之后的的代码不运行

//自定义错误
func readConfig(name string)error{
	    b:=strings.HasSuffix(name,"fig")
        if b==true{
			return nil
		}else{
		//返回自定义错误
			return errors.New("文件名不正确")
		}
}
func errRead(){
	result:=readConfig("mmp.fi")
	if result !=nil{
		panic(result)
	}else{
        fmt.Println("没错误,继续执行")
	}
}
func main(){
    // testError()
	// fmt.Println("发送邮件")  //莫尔尼情况下不能到这一行
	errRead()
    fmt.Println("下面代码不执行了")

}

如果阅读完毕对你有一点帮助,请点赞支持,谢谢

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值