Go语言中函数是程序基本单元,使用func关键字定义,包含函数名、参数列表和返回值类型,支持多返回值与匿名函数;通过函数名加括号传参调用,多返回值需多变量接收;defer用于延迟执行,遵循后进先出原则,常用于资源释放。

Go语言中的函数是构建程序的基本单元,用于封装可复用的逻辑。定义和调用函数遵循简洁而明确的语法规则。
函数定义语法
使用 func 关键字定义函数,基本结构如下:
func 函数名(参数列表) 返回值类型 {函数体
}
说明:
- 函数名:遵循Go的标识符命名规则,通常采用驼峰式命名(如 CalculateSum)
- 参数列表:每个参数由名称和类型组成,多个参数用逗号分隔。若相邻参数类型相同,可省略前面的类型声明
- 返回值类型:可以是一个类型、多个类型,或省略(表示无返回值)
示例:
立即学习“go语言免费学习笔记(深入)”;
return a + b
}
// 简写形式
func multiply(a, b float64) float64 {
return a * b
}
// 多返回值
func divide(a, b float64) (float64, bool) {
if b == 0 {
return 0, false
}
return a / b, true
}
函数调用方式
定义后的函数可通过函数名加括号并传入对应参数进行调用。
- 调用时需传入与定义匹配的参数数量和类型
- 多返回值函数需用多个变量接收结果
- 函数可在定义前被声明(通过函数签名),实现跨文件调用
示例:
立即学习“go语言免费学习笔记(深入)”;
result := add(3, 5)fmt.Println(result) // 输出 8
value, ok := divide(10, 2)
if ok {
fmt.Printf("结果: %f\n", value)
}
匿名函数与函数变量
Go支持在代码中直接定义无名函数,并赋值给变量,实现灵活调用。
- 匿名函数可立即执行,也可作为值传递
- 函数本身是一等公民,可被赋值、传参、返回
示例:
立即学习“go语言免费学习笔记(深入)”;
square := func(x int) int {return x * x
}
fmt.Println(square(4)) // 输出 16
延迟调用 defer
Go提供 defer 关键字,用于延迟执行函数调用,常用于资源释放。
- defer 后的函数会在包含它的函数返回前执行
- 多个 defer 按后进先出顺序执行
示例:
立即学习“go语言免费学习笔记(深入)”;
func readFile() {file, _ := os.Open("data.txt")
defer file.Close() // 函数结束前自动关闭文件
// 读取文件操作...
}
基本上就这些。掌握函数定义与调用规则,是编写清晰、模块化Go代码的基础。注意参数类型、返回值处理和 defer 的合理使用,能有效提升代码质量。










