Z
ZHANK
编程在线教程Go 教程函数定义与多返回值
函数

函数定义与多返回值

func 声明、多返回值、命名返回值、可变参数 ...、函数是值

函数定义与多返回值

Go 函数特色:多返回值(不用包装类)、命名返回值(自带文档)、函数是第一公民。

学完本章你将: 掌握 func、多返回值、命名返回值、可变参数、函数变量。


多返回值

go
package main

import "fmt"

// 返回两个值——Go 的错误处理就靠这个
func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, fmt.Errorf("除数不能为零")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 3)
    if err != nil {
        fmt.Println("出错:", err)
        return
    }
    fmt.Println(result)  // 3.333...
}

命名返回值

go
// 命名返回值——相当于在函数顶部声明了变量
func split(sum int) (x, y int) {  // x 和 y 已声明
    x = sum * 4 / 9
    y = sum - x
    return  // 裸 return(返回 x, y)
}

// 实际开发建议:简单函数用命名返回值,复杂函数显式 return

可变参数

go
func sum(nums ...int) int {
    total := 0
    for _, n := range nums {
        total += n
    }
    return total
}

fmt.Println(sum(1, 2, 3))        // 6
fmt.Println(sum(1, 2, 3, 4, 5))  // 15

// 展开切片
slice := []int{1, 2, 3}
fmt.Println(sum(slice...))       // 6

函数是值

go
// 函数可以赋值、传参、返回
var op func(int, int) int
op = func(a, b int) int { return a + b }
fmt.Println(op(3, 5))  // 8