Go 语言函数学习笔记

函数的定义和声明方式

在 Go 语言中,函数使用关键字 func 来定义和声明,格式如下:

goCopy Code
func function_name(parameters) (return_type) { // 函数体(代码块) }

其中,function_name 为函数名,parameters 是函数参数列表(可选),return_type 是函数返回值类型(也可选)。

函数的定义和声明可以分开进行,例如:

goCopy Code
func functionName(parameters) (return_type) { // 函数体(代码块) } ... result := functionName(arguments)

函数参数和返回值

Go 语言中的函数可以接受多个参数,参数间用逗号 , 分隔,例如:

goCopy Code
func add(x, y int) int { return x + y }

函数可以返回多个值,这些值以逗号 , 分隔,例如:

goCopy Code
func swap(x, y string) (string, string) { return y, x }

可变参数列表

有些函数允许用户传入可变数量的参数,此时可以使用可变参数列表。在函数定义中,使用 ...type 表示该参数是可变长的,例如:

goCopy Code
func sum(values ...int) int { total := 0 for _, value := range values { total += value } return total }

匿名函数

Go 语言中支持匿名函数,可以直接定义在代码块内,例如:

goCopy Code
func main() { func() { fmt.Println("Hello, world!") }() }

函数作为变量

在 Go 语言中,函数也可以作为变量,可以赋值给一个变量,例如:

goCopy Code
func add(x, y int) int { return x + y } func subtract(x, y int) int { return x - y } func main() { var operations = map[string]func(int, int) int{ "add": add, "subtract": subtract, } fmt.Println(operations["add"](1, 2)) // 输出:3 fmt.Println(operations["subtract"](5, 3)) // 输出:2 }

示例

接下来是一个简单的示例,定义了一个函数来计算两个数的平均值:

goCopy Code
package main import "fmt" func average(numbers ...float64) float64 { total := 0.0 count := len(numbers) for _, number := range numbers { total += number } return total / float64(count) } func main() { fmt.Println(average(1, 2, 3, 4, 5)) // 输出:3 }

该函数使用 ...float64 定义了可变参数列表,接受任意数量的浮点数并计算它们的平均值。