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