「这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战」。
0 环境
- 系统环境:win10
- 编辑器:vscode
- go版本:gol.17.3
1 前言
go 函数可以返回多个值,和其他语言不太一样,比如你要返回多个值,需要传值给一个集合,然后把这个集合返回,得到值在解压出来,挺麻烦的,比如我就想要多个值,那么go函数帮我们很好的解决了(懒人福音呀)。还有可变参数和匿名函数用的较多。
2 函数返回多个值
和单个值返回类似,只是多个变量名,每个变量名对应一个类型,只要确保变量名和类型一致即可。而函数返回值的接收值用逗号分开,假如不想要其中某个值,直接用
_忽略掉。这里的error代表着错误信息。
1 命名返回参数
函数的参数可以用变量名称,那么函数的返回值也是可以的,也就是说我可以在函数体中
return时,返回多个值(变量名),也可以直接把这些个变量名直接绑定到函数类型(格式:变量名 类型),这种方式不太常用。
3 可变参数
函数参数的数量是可变的。比如你可以无参,也可以一个或多个参数。比如js语言里叫不定参数,形式
function funcName(...变量名),而go语言函数则是...放在参数类型前,如func funcName(变量名 ...int)。可以看出是有区别的。下图可看出,可变参数的类型最后打印出来的值就是切片,下图的结果是:[]int,这也可以说明为啥可以进行循环了,注意:可变参数一定放在括号的最后面,普通参数放在前面。
4 闭包和匿名函数
匿名函数,隐姓埋名(没有身份证的人)的干着函数的活,最终活是干完了。
函数也是一种类型,它也可以被当作声明函数类型的变量、参数或作为另一个函数的返回值类型。如下图:闭包:
func 函数名() func() 返回类型 {return 匿名函数}。
5 总结
go函数不同于其他语言,它支持返回多个值,很方便,保证变量名和返回的类型一致即可。可变参数的运用,和其他语言的...变量名的位置是不一样的,别搞混了,以及当有普通参数的话,可变参数位置放最后面。还有就是匿名函数和闭包,匿名函数可以赋值成为一个变量,闭包直白点就是在一个函数里套壳匿名函数并return出去。