Go学习笔记—函数

Go学习笔记—函数


感谢观看,如有问题,请留言指正!谢谢


函数

函数是Go语言的中心。

首先,看这个例子:

func plus(a,b int) int{
    
    
    return a+b
}

通过例子我们可以了解到函数由以下四部分组成:

  • 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。
  • 参数:参数由参数变量和参数变量的类型组成,多个参数之间使用,分隔。
  • 返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用()包裹,并用,分隔。
  • 函数体:实现指定功能的代码块

函数的调用方式为函数名(),带参数的函数需要在调用是加上参数。

func main(){
    
    
    sum := plus(1,2)
    fmt.Println("sum:",sum)
}

可变参数:函数的参数不固定时,可通过在参数名后加...来标识。

func intSum(x...int)int{
    
    
    fmt.Printf("x:%T\n",x)
    fmt.Println(x)
    return 0
}

//intSum(10,10) 主函数调用
//x:[]int	//x是切片类型
//[10 10]

可变参数与固定参数同时使用时,要放在固定参数的后面。

多返回值

Go函数使用多返回值时,必须使用()将所有返回值包裹起来。

func calc(x,y int)(int,int){
    
    
    sum := x+y
    sub := x-y
    return sum,sub
}

//calc(4,7)
//11 -3

如果只需要一部分返回值,可以使用匿名变量_

匿名函数

匿名函数是没有函数名的函数,可以在函数中当作返回值使用。定义格式如下:

func (参数)(返回值){
    
    
    函数体
}

由于匿名函数没有函数名,所以不能向普通函数那样直接调用,所以匿名函数需要保存到某个变量中或者作为立即执行函数。

func main(){
    
    
    //将匿名函数保存在变量中执行
    add := func(x,y int){
    
    
        fmt.Println(x+y)
    }
    add(10,20) //通过变量来调用匿名函数
    
    //匿名函数定义后立即执行
    func(x,y int){
    
    
        fmt.Println(x+y)
    }(10,20)
}

//30
//30

闭包

闭包 = 函数 + 引用环境。

func intSeq() func() int{
    
    
	i := 0
	return func() int {
    
    
		i += 1
		return i
	}
}

func main(){
    
    
    //定义变量来引用函数,形成闭包,每次调用都会更新i
	nextInt := intSeq()
	fmt.Println(nextInt())
	fmt.Println(nextInt())
	fmt.Println(nextInt())
	
    //定义新的变量来引用函数,形成闭包,每次调用都会更新i
	newInts := intSeq()
	fmt.Println(newInts())
	
    //两次闭包调用对i的更新值是不同的
}

递归

递归的特性请看这篇文章。

https://blog.csdn.net/weixin_46435420/article/details/119411637?spm=1001.2014.3001.5501

猜你喜欢

转载自blog.csdn.net/weixin_46435420/article/details/119458084