Go 语言函数
封面图
•
2026-04-12
•
Go
9
0
0
0
Go 语言(Golang)中的**函数**是程序的基本组成单元,用于封装可重用的代码块。Go 的函数语法简洁、功能强大,支持多种特性,如多返回值、匿名函数、闭包等。 --- ## 🧩 一、基本语法 ```go func 函数名(参数列表) 返回值类型 { // 函数体 return 返回值 } ``` ### 示例:一个简单的函数 ```go package main import "fmt" func add(a int, b int) int { return a + b } func main() { result := add(3, 5) fmt.Println("结果:", result) } ``` --- ## 📦 二、函数参数和返回值 ### 1. 多个参数 ```go func sum(a, b, c int) int { return a + b + c } ``` ### 2. 多个返回值 ```go func divide(a, b int) (int, error) { if b == 0 { return 0, errors.New("除数不能为零") } return a / b, nil } ``` ### 3. 命名返回值(便于调试) ```go func divide(a, b int) (result int, err error) { if b == 0 { return 0, errors.New("除数不能为零") } result = a / b return } ``` --- ## 🔁 三、匿名函数和闭包 ### 匿名函数 ```go func main() { func() { fmt.Println("这是一个匿名函数") }() } ``` ### 闭包(Closure) ```go func makeCounter() func() int { count := 0 return func() int { count++ return count } } func main() { counter := makeCounter() fmt.Println(counter()) // 1 fmt.Println(counter()) // 2 } ``` --- ## 🧠 四、函数作为值 在 Go 中,函数可以被赋值给变量,也可以作为参数传递给其他函数。 ```go func add(a, b int) int { return a + b } func operate(a, b int, f func(int, int) int) int { return f(a, b) } func main() { result := operate(3, 5, add) fmt.Println(result) // 输出 8 } ``` --- ## 🔄 五、可变参数函数(Variadic Functions) 使用 `...` 表示可变参数: ```go func sum(numbers ...int) int { total := 0 for _, num := range numbers { total += num } return total } func main() { fmt.Println(sum(1, 2, 3)) // 6 fmt.Println(sum(10, 20, 30)) // 60 } ``` --- ## 🧪 六、defer 和 panic(与函数相关) ### defer 在函数返回前执行某个函数调用,常用于资源释放或日志记录。 ```go func readFile() { file, _ := os.Open("test.txt") defer file.Close() // 确保文件关闭 // 读取文件... } ``` ### panic 和 recover ```go func faultyFunc() { defer func() { if r := recover(); r != nil { fmt.Println("Recovered from panic:", r) } }() panic("发生错误") } func main() { faultyFunc() fmt.Println("程序继续运行...") } ``` --- ## ✅ 总结 | 特性 | 说明 | |------|------| | 函数定义 | `func name(params) returns { ... }` | | 多返回值 | 支持多个返回值 | | 匿名函数 | 没有名字的函数 | | 闭包 | 可以访问外部作用域的函数 | | 可变参数 | 使用 `...` 定义 | | defer | 在函数退出时执行 | | panic/recover | 错误处理机制 | --- 如果你对某个部分想深入了解(比如闭包、defer、panic),欢迎继续提问!
上一篇:
Go 语言递归函数
标题录入,一次不能超过6条
留言
评论