首页 > Golang 阅读数:12

Go语言函数声明

很久以前的人们想要制作果汁,每次都用手挤,非常麻烦;后来有人发明了榨汁机,人们只要把水果放进去,榨汁机就会把果汁榨出来。函数的功能就像榨汁机一样,能够帮助人们做重复的任务。函数是组织好的、可重复使用的执行特定任务的代码块。它可以提高应用程序的模块性和代码的重复利用率。

Go语言从设计上对函数进行了优化和改进,让函数使用起来更加方便。因为Go语言的函数本身可以作为值进行传递,既支持匿名函数和闭包,又能满足接口,所以Go语言的函数属于一等公民。

普通函数需要先声明才能调用,一个函数的声明包括参数和函数名等。编译器通过声明才能了解函数应该怎样在调用代码和函数体之间传入参数和返回参数。语法格式如下所示。

func 函数名(参数列表)(返回参数列表){
    //函数体
}
func funcName(parametername type1, parametername type2 ...) (output1 type1, output2 type2 ...){
    // 逻辑代码
    // 返回多个值
    return value1, value2 ...
}

1、函数定义解析

1) func

函数关键字。函数由 func 开始声明;

2) funcName

函数名。函数名和参数列表一起构成了函数签名。函数名由字母、数字和下画线组成。函数名的第一个字母不能为数字。在同一个包内,函数不能重名;

3) parametername type

参数列表。定义函数时的参数叫作形式参数,形参变量是函数的局部变量;函数被调用时,可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序及参数个数。参数是可选的,也就是说函数可以不包含参数;

4) output1 type1, output2 type2

返回值列表。返回值返回函数的结果,结束函数的执行。Go语言的函数可以返回多个值。返回值可以是返回数据的数据类型,也可以是变量名+变量类型的组合。

函数声明时有返回值,必须在函数体中使用 return 语句提供返回值列表。如果只有一个返回值并且没有声明返回值变量,那么可以省略包括返回值的括号。return 后的数据,要保持和声明的返回值类型、数量、顺序一致。如果函数没有声明返回值,函数中也可以使用 return 关键字,用于强制结束函数。

5) 函数体

函数定义的代码集合,是能够被重复调用的代码片段。

2、参数类型简写

在参数列表中,如果有多个参数变量,则以逗号分隔,如果相邻变量是同类型,则可以将类型省略。语法格式如下所示。

func add(a, b int) { }

Go语言的函数支持可变参数。接受变参的函数有着不定数量的参数,语法格式如下所示。

func myfunc(arg ...int) { }

arg ...int 告诉Go语言这个函数接受不定数量的参数。注意,这些参数的类型全部是 int。在函数体中,变量 arg 是一个 int 的 slice(切片)。