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接收,输出错误信息,并且退出程序,在错误代码之后的的代码不运行

扫描二维码关注公众号,回复: 12489252 查看本文章
//自定义错误
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("下面代码不执行了")

}

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

猜你喜欢

转载自blog.csdn.net/yyq1102394156/article/details/113872830