Go语言基础:函数与方法
1. 函数基础声明
Go语言函数采用显式参数类型声明,支持多返回值和命名返回参数,基础语法如下:
示例:基本函数声明
关键点说明:
- 参数类型相同时可合并声明(如`a, b int`)
- 多返回值需用括号包裹类型列表
- 命名返回参数可直接通过`return`语句返回
2. 可变参数与函数类型
Go支持可变参数(...Type)和函数作为类型(函数式编程),以下是典型应用示例:
示例:可变参数与函数类型
注意事项:
- 可变参数需作为最后一个参数声明
- 函数类型可用于定义回调函数或实现策略模式
- 匿名函数可直接作为参数传递
3. 方法(Method)的定义与使用
Go通过为类型(通常是结构体)绑定方法实现类似面向对象的行为,方法声明需指定接收者:
示例:结构体方法声明
接收者选择原则:
- 值接收者:适用于不修改接收者状态的方法(拷贝安全)
- 指针接收者:适用于需要修改接收者状态或接收者较大时(避免拷贝开销)
- 接口实现需保持接收者类型一致(值/指针)
4. 高阶函数与闭包
Go支持高阶函数(返回函数的函数)和闭包(捕获外部作用域变量的函数),常用于实现工厂模式或状态保持:
示例:高阶函数与闭包
闭包特性:
- 闭包捕获的变量是引用而非拷贝
- 每个返回的函数实例拥有独立的变量副本
- 可用于实现延迟计算、事件处理器等场景
5. 错误处理与函数返回
Go推荐通过返回错误值(error类型)处理异常,标准库函数普遍采用`(result, error)`返回模式:
示例:错误处理函数
最佳实践:
- 优先使用标准库`errors.New`或`fmt.Errorf`创建错误
- 通过类型断言区分具体错误类型(自定义错误)
- 避免忽略错误(使用`_`占位符时需明确意图)