前面的文章主要介绍了 Go 语言中提供的常用容器,包括数组、切片,列表和字典等,还介绍了这些容器的遍历方法。本文开始将会介绍 Go 语言中相关的函数和接口。
函数是一段封装好、可重复使用、针对单一功能的代码片段,它有利于程序的模块化和提高代码的可重用性。接口中定义了一系列将要被实现的方法,它代表了调用方和实现方共同遵守的协议,调用方通过接口了解可使用的方法而无需了解具体实现,实现方通过接口对外提供能使用的特性。
函数首先要进行声明,Golang 中函数声明包括函数名、参数列表、返回参数列表,具体样式如下所示:
func name(params)(return params){
function body
}
Golang 中函数以 func
标识,我们在之前的例子中声明的 main
函数也是其中一种。函数名可以由字母、数字和下划线组成,但是函数名第一位不能是数字,在同一个包内,函数名不可重名。一个函数如果希望被包外代码访问,函数名的首字母需要为大写。
参数列表中的每个参数由参数变量名和参数类型组成,它们将作为函数的局部变量被使用。在参数列表中,多个参数之间通过逗号分隔。如果相邻的参数的类型是相同的,则可以省略类型,如下例子所示:
func cal(a, b int) int {
return a + b;
}
在上面例子中,参数 a
和 b
都是 int
类型,因此可以省略 a
的类型说明。
Golang 中函数不仅支持多返回值,还支持对返回值进行命名,此时返回参数列表与参数列表类似,如下例子所示:
func div(dividend, divisor int)(quotient, remainder int) {
quotient = dividend/divisor
remainder = dividend%divisor
return
}
在上面正整数除法的函数中,我们对返回值分别命名为 quotient
和 remainder
,于是我们可以直接在函数体内对他们进行赋值。需要注意的是,在使用命名返回值的函数中,在函数结束前我们需要显式使用 return
语句进行返回。命名返回值和非命名返回值不能混合使用,两种形式只能二选一,否则会出现编译错误。
本文主要介绍了函数声明和参数传递。函数是基本的代码块,用于执行一个任务。Go 程序最少有个 main() 函数。通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。函数声明告诉了编译器函数的名称,返回类型,和参数。
Golang 中函数参数的传递方式都是值传递,在实际开发中为了减少拷贝时产生的性能损耗,我们可以在参数中使用指针或者引用(切片)来减少内存复制的操作。