← 返回主页

第4课: 函数与方法

函数定义

func add(a int, b int) int {
    return a + b
}

// 简化参数类型
func multiply(a, b int) int {
    return a * b
}

// 多返回值
func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, fmt.Errorf("除数不能为0")
    }
    return a / b, nil
}

命名返回值

func calculate(a, b int) (sum, product int) {
    sum = a + b
    product = a * b
    return // 自动返回 sum 和 product
}

可变参数

func sum(numbers ...int) int {
    total := 0
    for _, num := range numbers {
        total += num
    }
    return total
}

// 调用
result := sum(1, 2, 3, 4, 5)

匿名函数与闭包

// 匿名函数
add := func(a, b int) int {
    return a + b
}
fmt.Println(add(3, 4))

// 闭包
func counter() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

c := counter()
fmt.Println(c()) // 1
fmt.Println(c()) // 2

方法

type Rectangle struct {
    width, height float64
}

// 值接收者
func (r Rectangle) Area() float64 {
    return r.width * r.height
}

// 指针接收者
func (r *Rectangle) Scale(factor float64) {
    r.width *= factor
    r.height *= factor
}

rect := Rectangle{width: 10, height: 5}
fmt.Println(rect.Area())
rect.Scale(2)