函数基础介绍

- 函数声明:

  - 基础语法:

 

    - 小demo:

 

  - 参数名:

    - 若同时有多个相同类型的参数,只需在最后一个参数后面声明参数类型即可:

    - 示例:

 

- 返回值 return

  - 没有返回值:

    - 若函数没有返回值,则不能进行赋值给变量;

  - 单个返回值:

    - 直接在形参的扩号后面加上返回值的类型即可:

 

  - 多返回值:

    - 支持一个函数可以有多个返回值。

    - 若返回多个返回值,返回值的类型需要用括号括起来;

    - 示例:

 

  - 命名返回值:

    - 在函数中也可以将返回值直接先命名;这样相当于在函数作用域中的第一行就声明的了变量;

    - 不需要在return中明确指定返回值,默认会返回,作用域中的定义后的值;当然了也可以直接定义,不过这样会覆盖掉有了名字的返回值:

    - 示例:

 

 

- 空白符:

  - _ 在 Go 中被用作空白符,可以用作表示任何类型的任何值。

  - 当函数返回多个值,但是只需要用到其中一个时,这时候就可以利用_空白符;

  - 示例:

 

- 函数调用:

  - 语法: 函数名() ;

  - 等同于python中的函数调用;不过,不支持 位置传参;

可变参数

 - 在函数中,最后一个参数是:...T  :表示该函数可以接受任意个数类型为T的参数作为最后参数;

- 工作原理:

  - ... 在go中作为语法糖,等同于python中的 * ;在形参上为 聚合,调用时的实参为打散;

  - 将可变参数,组成了一个切片,雷同与python中的*args;

  - 因为可变参数,会组成一个切片,所以不支持传入切片到可变参数中;

- 示例:

 

匿名函数

- 匿名函数:支持将函数赋值给变量, 也可以将函数作为其他函数的参数或返回值;

  - 赋值给变量:

 

   - 直接调用:

 

- 高阶函数: 

  - 满足下面两个任意一个条件的函数,被称为高级函数:

    - 接受一个或多个函数作为参数;

      - 示例:

    - 返回值是一个函数;

      - 示例:

 

- 闭包:

  - python中的装饰器类似:

  - 调用函数外部的变量;