go函数的定义和调用

Go 函数的定义与调用

1. 函数定义

Go 语言使用 func 关键字定义函数,基本语法:

func 函数名(参数列表) [返回值类型] {
    // 函数体
}

关键特性

  • 参数:支持多个参数,格式 参数名 类型
  • 返回值
    • 单返回值:直接声明类型
    • 多返回值:用括号包裹类型 (类型1, 类型2)
  • 命名返回值:可直接在返回值声明中命名变量

示例定义

// 单返回值函数
func add(a int, b int) int {
    return a + b
}

// 多返回值函数
func swap(x, y string) (string, string) {
    return y, x
}

// 命名返回值
func divide(dividend, divisor float64) (result float64, err error) {
    if divisor == 0 {
        err = errors.New("除数不能为零")
        return
    }
    result = dividend / divisor
    return
}

2. 函数调用

直接通过函数名和参数列表调用:

// 调用单返回值函数
sum := add(3, 5)  // sum = 8

// 调用多返回值函数
a, b := swap("hello", "world")  // a="world", b="hello"

// 调用命名返回值函数
res, err := divide(10.0, 2.0)
if err != nil {
    fmt.Println("错误:", err)
} else {
    fmt.Println("结果:", res)  // 输出 5.0
}

3. 特殊函数类型
类型说明示例
匿名函数无需命名,直接定义使用func(x int) { ... }(5)
闭包捕获外部变量的函数见下方示例
方法绑定到结构体的函数func (s Struct) f(){}

闭包示例

func accumulator() func(int) int {
    sum := 0
    return func(x int) int {
        sum += x
        return sum
    }
}

// 使用闭包
acc := accumulator()
fmt.Println(acc(1))  // 1
fmt.Println(acc(2))  // 3

4. 最佳实践
  1. 错误处理:多返回值函数中,最后一个返回类型通常为 error
  2. 参数简写:相同类型参数可合并声明 func f(a, b int)
  3. 空白标识符:忽略不需要的返回值:
    res, _ := swap("a", "b")

通过函数封装逻辑单元,是 Go 语言模块化设计的核心机制。合理使用函数返回值、错误处理和闭包特性,可显著提升代码质量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值