课程进度 24% · 第6/23章第6/23章 · 标签 1/2
— 1 —
函数定义与调用
Go函数使用func关键字声明,支持多返回值。
go
1
// 函数定义
2
func add(a int, b int) int {
3
return a + b
4
}
5
// 调用
6
result := add(3, 4)
7
8
// 多返回值
9
func div(a, b int) (int, error) {
10
if b == 0 { return 0, errors.New("除零") }
11
return a / b, nil
12
}
参数与返回值
Go支持可变参数、命名返回值、多返回值。
go
1
// 可变参数
2
func sum(nums ...int) int {
3
total := 0
4
for _, n := range nums { total += n }
5
return total
6
}
7
// 命名返回值
8
func split(sum int) (x, y int) {
9
x = sum * 4 / 9
10
y = sum - x
11
return // 裸返回
12
}
— 2 —
方法与接收者
Go方法在函数名前面加接收者(Receiver),可以是值或指针。
go
1
type Rectangle struct {
2
Width, Height float64
3
}
4
// 值接收者
5
func (r Rectangle) Area() float64 {
6
return r.Width * r.Height
7
}
8
// 指针接收者(可修改)
9
func (r *Rectangle) Scale(f float64) {
10
r.Width *= f
11
r.Height *= f
12
}
匿名函数与闭包
go
1
// 匿名函数
2
func() { fmt.Println("匿名") }()
3
// 闭包
4
func adder() func(int) int {
5
sum := 0
6
return func(x int) int {
7
sum += x
8
return sum
9
}
10
}
func多返回值接收者闭包可变参数