函数是一种可重复使用的代码块,用于执行特定任务或计算特定值。在Go语言中,函数是一等公民,可以像其他值一样进行传递、赋值和返回。函数由函数名、参数列表、返回值列表、函数体和可选的函数签名组成。
函数的定义格式如下:
func functionName(parameter1 type, parameter2 type, ...) (returnType1, returnType2, ...) {
// 函数体
return returnValue1, returnValue2, ...
}
其中:
下面是一个简单的函数示例:
package main
import "fmt"
func add(a, b int) int {
return a + b
}
func main() {
sum := add(3, 5)
fmt.Println(sum) // 输出:8
}
在上面的示例中,我们定义了一个名为add的函数,接受两个整数参数并返回它们的和。在main函数中调用add函数,并打印出返回值。
在Go语言中,函数可以具有多个返回值,例如:
func divMod(a, b int) (int, int) {
return a / b, a % b
}
func main() {
div, mod := divMod(10, 3)
fmt.Println(div, mod) // 输出:3 1
}
在上面的示例中,我们定义了一个名为divMod的函数,接受两个整数参数并返回它们的整数除和取模结果。在main函数中调用divMod函数,并分别保存两个返回值。
除了普通函数外,Go语言还支持匿名函数和闭包。匿名函数是没有名字的函数,可以直接在代码中定义并调用。闭包是一个函数值,它引用了其函数体之外的变量。以下是一个匿名函数和闭包的示例:
package main
import "fmt"
func main() {
// 匿名函数
add := func(a, b int) int {
return a + b
}
sum := add(3, 5)
fmt.Println(sum) // 输出:8
// 闭包
counter := func() func() int {
count := 0
return func() int {
count++
return count
}
}
next := counter()
fmt.Println(next()) // 输出:1
fmt.Println(next()) // 输出:2
}
在上面的示例中,我们定义了一个匿名函数add和一个闭包counter,分别实现加法和计数功能。通过调用next函数,可以不断增加计数值。
总的来说,函数在Go语言中扮演着重要的角色,可以帮助我们划分和组织代码逻辑,实现代码的复用和模块化。在编写程序时,应该充分利用函数的特性来提高代码的可读性和可维护性。