Go语言中的函数
函数对于众多的编程语言来说,都是至关重要的。有一种观点,认为数据结构比算法重要,因为数据结构往往决定了它的功能。换句话说,结构决定功能。在Go语言中,为什么函数具备可重复调用,且可根据传入参数,经过一定的逻辑处理后返回结果呢?本质上这是由函数的基本结构决定的。
1 Go函数基本结构
Go语言的函数基本定义语法:
func 函数名( [参数列表] ) [函数返回值类型] {
函数体
}
Go语言的函数是由如下几个部分构成的:
关键字func
在Go语言中,任何一个函数的定义,必须用关键字func打头进行声明,func是函数英文名function的简写,这样可以更快地进行编码。关键字func和函数名之间必须用空格隔开。
函数名
函数名不能用数字或者$、#等特殊字符打头,函数名首字母的大小写决定该函数的包外可见性。首字母大写的函数在包外可见,而首字母小写的函数在包含不可见。Go语言中建议用驼峰法对函数名进行命名,比如getName()而不是get_name()。函数名可以不指定(为空),这种函数称为匿名函数。函数名作为函数的标识符,可以用来对函数进行引用。
参数列表
函数可以看作是具备输入和输出接口的黑盒。那么函数的参数列表就是函数的输入。Go语言是强类型语言,每个函数的参数列表必须要给定形参的名称以及形参的类型。函数定义中给出的形参列表信息就限定了函数调用的时候,可以传入的实参个数、顺序以及类型,不匹配的话会出现错误。参数列表可以为空,可以是一个或者多个值。不同的参数之间用英文逗号隔开。形参只是一个占位符,当函数在调用时,我们将实际的值传递给函数的形参,这个实际的值被称为实参。
返回值类型
函数的作用就是对输入进行逻辑处理,并返回结果,从而实现代码的复用。Go语言的函数在定义的时候,如果有返回值,那么需要指定返回值的类型。如果不指定,则表示函数不返回任何值。Go语言中函数返回值可以是函数。另外,如果函数返回声明中不但给了返回值类型,还给出了返回值的别名,如func sum(a, b int) (c int),那么变量c在函数内部可以直接进行使用,无需再次声明,并且函数最后可以用return进行结束,函数会自动返回c的值,即相当于return c。
函数体
函数体是函数定义中,在符号{ }之间的代码块。Go语言中,函数的第一个左括号{必须和函数名在一行,不能另起一行。函数体中可以用return关键字进行返回值。函数体中可以调用其他函数,也可以重新定义函数。
下面给出一个Go语言函数的示例,如代码所示。
package main
import "fmt"
func sum(a int, b int) int {
return a + b
}
func main() {
c := sum(2, 3)
fmt.Printf("sum(2, 3)=%d \n", c)
}
代码中,03行首先用func关键字声明了一个名为sum的函数,这个sum函数有两个参数,分别是a和b,其类型都是int。sum函数返回值类型也是int。04行是sum函数的函数体,用return返回形参a和b的和。07行用短变量定义的方式定义了一个变量c,其值为调用函数sum的返回值。此时,实参2和3会被传递到函数sum的形参a和b中,因此返回值为2+3=5。由于Go语言是一门编译型的语言,因此函数编写的顺序是无关紧要的,例如代码3-1中的函数sum可以放于main函数之前,也可以放于之后,顺序不影响调用结果。
注意:Go语言中不支持函数的重载,另外同一个包中,不允许定义同名的函数,即使它们的参数不一样。内置的init函数除外。
- 点赞
- 收藏
- 关注作者
评论(0)