函数

Go语言的函数,很像JavaScript语言的函数

func 函数名称 (形参1, 形参2) (返回值类型列表) {
  函数体
  retrun 返回值列表
}

函数的声明

函数的命名

  • 函数名也是标识符,遵循标识符的命名规范

  • 首字母小写,只能被本包使用

  • 首字母大写,可以被本包以及其他包使用

重载:不支持

// 以下代码会报错
// 编译器会认为下面的两个方法定义是重复的
func test() {}

func test(a string) {}

无参函数

有参函数:参数类型一致

有参函数:类型不一致

有参函数:可变参数

无返回值函数

如果是无返回函数,返回值类型不填

单返回值函数

如果只有一个返回值,可以省略括号

多返回值函数

函数可以有多个返回值,多个返回值返回使用逗号隔开

带有变量名的返回值

函数的调用

调用多返回值函数

忽略多返回值函数返回值

函数参数的值传递与引用传递

基本类型形参是值传递

使用指针可以做到引用传递:

引用类型形参是引用传递

  • 指针

  • 切片

  • map

  • 函数

  • channel

等数据类型。

匿名函数

定义并直接调用匿名函数

变量函数

变量函数传递

匿名函数应用技巧

闭包(Closure)

闭包就是能够读取其他函数内部变量的函数,在其他语言中,也称为Lambda表达式。在Golang中,闭包组成如下:

下面是一个闭包累加器:

结果:

defer 延迟执行语句

类似于Java的Finally语句,通常用于标记关闭资源的语句,让其使用完毕后自动关闭:

执行结果如下:

最后更新于

这有帮助吗?