函数基础介绍
- 函数声明:
- 基础语法:
- 小demo:
- 参数名:
- 若同时有多个相同类型的参数,只需在最后一个参数后面声明参数类型即可:
- 示例:
- 返回值 return
- 没有返回值:
- 若函数没有返回值,则不能进行赋值给变量;
- 单个返回值:
- 直接在形参的扩号后面加上返回值的类型即可:
- 多返回值:
- 支持一个函数可以有多个返回值。
- 若返回多个返回值,返回值的类型需要用括号括起来;
- 示例:
- 命名返回值:
- 在函数中也可以将返回值直接先命名;这样相当于在函数作用域中的第一行就声明的了变量;
- 不需要在return中明确指定返回值,默认会返回,作用域中的定义后的值;当然了也可以直接定义,不过这样会覆盖掉有了名字的返回值:
- 示例:
- 空白符:
- _ 在 Go 中被用作空白符,可以用作表示任何类型的任何值。
- 当函数返回多个值,但是只需要用到其中一个时,这时候就可以利用_空白符;
- 示例:
- 函数调用:
- 语法: 函数名() ;
- 等同于python中的函数调用;不过,不支持 位置传参;
可变参数
- 在函数中,最后一个参数是:...T :表示该函数可以接受任意个数类型为T的参数作为最后参数;
- 工作原理:
- ... 在go中作为语法糖,等同于python中的 * ;在形参上为 聚合,调用时的实参为打散;
- 将可变参数,组成了一个切片,雷同与python中的*args;
- 因为可变参数,会组成一个切片,所以不支持传入切片到可变参数中;
- 示例:
匿名函数
- 匿名函数:支持将函数赋值给变量, 也可以将函数作为其他函数的参数或返回值;
- 赋值给变量:
- 直接调用:
- 高阶函数:
- 满足下面两个任意一个条件的函数,被称为高级函数:
- 接受一个或多个函数作为参数;
- 示例:
- 返回值是一个函数;
- 示例:
- 闭包:
- python中的装饰器类似:
- 调用函数外部的变量;