在 Go 语言中,函数是独立的代码块,可以接受参数并返回结果。下面是对 Go 语言中函数、参数和返回值的详细讲解。
函数的基本定义形式如下:
func 函数名(参数列表) (返回值列表) { // 函数体 }
func
函数名
参数列表
参数名 类型
返回值列表
package main import "fmt" // 定义一个简单的函数,没有参数和返回值 func sayHello() { fmt.Println("Hello, World!") } // 定义一个带有参数和返回值的函数 func add(a int, b int) int { return a + b } // 定义一个带有多个返回值的函数 func swap(x, y string) (string, string) { return y, x } // 定义一个可变参数的函数 func sum(nums ...int) int { total := 0 for _, num := range nums { total += num } return total } func main() { sayHello() result := add(3, 4) fmt.Println("3 + 4 =", result) a, b := swap("Go", "Lang") fmt.Println("Swap:", a, b) total := sum(1, 2, 3, 4, 5) fmt.Println("Sum:", total) }
参数列表中的每个参数必须指定类型,多个参数可以共享类型:
func add(a int, b int) int { return a + b } func add(a, b int) int { return a + b }
可变参数允许函数接收任意数量的参数,使用 ... 表示:
...
func sum(nums ...int) int { total := 0 for _, num := range nums { total += num } return total }
函数可以返回一个单一值:
func add(a int, b int) int { return a + b }
函数可以返回多个值,用小括号包裹返回值类型:
func swap(x, y string) (string, string) { return y, x }
可以为返回值命名,命名返回值可以在函数体内视作变量使用,并且可以省略 return 语句中的返回值:
func divide(a, b float64) (result float64, err error) { if b == 0 { err = fmt.Errorf("cannot divide by zero") return } result = a / b return }
匿名函数没有函数名,可以立即执行或赋值给变量:
func main() { // 立即执行 func() { fmt.Println("Hello from anonymous function") }() // 赋值给变量 add := func(a int, b int) int { return a + b } fmt.Println("Anonymous add:", add(3, 4)) }
闭包是可以捕获其外部作用域变量的函数:
func main() { counter := func() func() int { count := 0 return func() int { count++ return count } }() fmt.Println(counter()) fmt.Println(counter()) fmt.Println(counter()) }
Go 语言的函数定义灵活多样,支持多种参数和返回值类型,并且具备闭包特性,能够满足复杂的编程需求。通过合理使用函数,可以大大提高代码的可读性和可维护性。
原文链接:codingdict.net