函数定义
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)