Go 语言函数


Go 语言函数

介绍

函数是Go语言中的基本组件,也是Go语言的核心特性之一。和其他编程语言不同,Go语言中的函数可以返回多个值,并且可以作为一类类型被传递和使用。Go语言中的函数可以接受参数和返回值,同时它们也可以有可变的参数列表和匿名函数。

基本语法

定义一个函数的基本语法如下:

func function_name( [parameter list] ) [return_types] {
   函数体
}

其中:

  • function_name:函数名称;
  • parameter list:形式参数列表,用逗号分隔;
  • return_types:返回类型列表,用逗号分隔;
  • 函数体:包含函数定义的代码块。

示例:

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

此函数接受两个整型参数并返回一个整型值。

可变参数列表

Go语言中的函数还支持可变参数列表。例如以下函数:

func add(args ...int) int {
    sum := 0
    for _, arg := range args {
        sum += arg
    }
    return sum
}

在参数列表的末尾添加了三个点,它们表示可以接受任意数量的 int 类型参数。这些参数都会被放入一个切片中,并在函数体内使用。

示例:

add(1, 2, 3) // 返回 6
add(1, 2, 3, 4, 5) // 返回 15

匿名函数

Go语言支持匿名函数,可以作为变量、参数或返回值。匿名函数可以对函数内外的变量进行访问,这种使用方式通常称为闭包。

示例:

func main() {
    add_func := func(x, y int) int {
        return x + y
    }
    result := add_func(1, 2)
    fmt.Println(result) // 输出 3
}

函数作为参数

Go语言支持函数作为参数,并且可以通过简单的语法来实现函数作为参数的功能。例如以下示例:

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

func mul(x, y int) int {
    return x * y
}

func do(op func(int, int) int, x, y int) int {
    return op(x, y)
}

func main() {
    fmt.Println(do(add, 1, 2)) // 输出 3
    fmt.Println(do(mul, 2, 3)) // 输出 6
}

可以看到,函数 do 接受一个类型为 func(int, int) int 的函数作为参数,用于执行加法或乘法运算。在 main 函数中,我们调用了 do 函数两次,并传递了相应的函数作为参数。

函数作为返回值

Go语言也支持函数作为返回值。例如以下示例:

func add(base int) func(int) int {
    return func(x int) int {
        return x + base
    }
}

func main() {
    add_two := add(2)
    fmt.Println(add_two(5)) // 输出 7
}

可以看到,函数 add 返回了一个匿名函数,用于将传入的参数与 base 相加,并返回结果。

结论

总结一下,Go语言中的函数是非常实用的工具,实现了很多其他语言不具备的高级特性,例如可以返回多个值、可变参数列表、匿名函数和函数作为参数或返回值等。这为Go语言的开发和编写高质量的代码提供了强大的支持。