GO函数专题测试
考察知识点
1. 函数定义与声明
- 函数关键字:func关键字定义函数
- 基本语法:参数列表、返回类型、函数体
- 函数命名:驼峰命名、首字母大小写决定可见性
- main函数:程序入口、必须在main包、无参数无返回值
- init函数:自动执行、可多个、先于main执行
2. 函数参数与返回值
- 参数传递:值传递、参数副本
- 多返回值:Go特色、返回多个值
- 命名返回值:命名返回参数、简化return
- 可变参数:
...type语法、函数内是切片 - 可变参数调用:直接传值或展开切片
slice...
3. 匿名函数与闭包
- 匿名函数:无名称函数、func(){}语法
- 立即执行:
func(){...}()括号紧跟 - 闭包定义:函数引用外部变量
- 闭包特性:外部变量生命周期延长
- 闭包陷阱:循环中的闭包问题
4. 延迟执行defer
- defer语法:延迟到函数返回前执行
- 执行顺序:多个defer按LIFO顺序(后进先出)
- defer应用:资源释放、解锁、错误处理
- defer参数:参数在defer时已确定
- defer与返回值:defer可修改命名返回值
5. 错误处理与panic/recover
- error接口:Error() string方法
- panic触发:panic()函数、程序崩溃
- recover捕获:必须在defer中调用
- recover返回:返回panic的值
- 应用场景:HTTP服务器防止崩溃
6. 函数类型与高阶函数
- 函数类型:
type Name func(params) returns - 函数作为值:赋值给变量
- 函数作为参数:传递给其他函数
- 函数作为返回值:返回函数
- 一等公民:函数像普通值一样使用
7. init函数与执行顺序
- init作用:包初始化
- init特点:自动执行、无参数无返回值
- 执行顺序:依赖包init → 当前包变量 → 当前包init → main
- init数量:一个文件可有多个init函数
8. 函数最佳实践
- 函数命名:清晰描述功能
- 函数长度:保持简洁、单一职责
- 参数数量:不超过5个参数
- 错误处理:返回error而非panic
- defer使用:资源释放放在defer中
Go语言中定义函数使用哪个关键字?
Go语言不支持函数重载(同名函数不同参数)。
Go语言函数最多可以返回多少个值?
当多个连续参数类型相同时,可以省略前面的类型声明,只保留最后一个的类型。
Go中定义可变参数函数使用什么语法?
Go函数的基本语法:______ 关键字开始,后跟 ______,参数列表在 ______ 内,返回类型在括号 ______。如果没有返回值,可以 ______ 返回类型。
Go中定义匿名函数的方式是?
Go的闭包可以捕获并修改外部函数的局部变量。
匿名函数可以通过 ______ 紧跟函数体后立即执行,语法为 _____________。闭包是指 ______ 引用了 ________,这些变量的生命周期 ______ 到闭包被释放时。
Go中defer语句的执行时机是?
defer语句中的参数在定义时就已计算,而非在执行时计算。
recover函数只能在defer函数中调用才能捕获panic。
Go中 ______ 函数用于触发异常,_______ 函数用于捕获异常。recover必须在 ______ 函数中调用才有效,否则返回 ______。panic触发后会执行当前函数的所有 ______ 语句,然后向上传播。
Go中函数可以赋值给变量,这种特性称为?
Go中可以定义 ________,语法为 ________________________。函数类型可以 ______ 给变量、作为 ______ 传递、作为 ______。这体现了Go中函数是 ________ 的特性。
关于defer与命名返回值的配合使用,以下说法正确的是?
Go程序的入口函数是 ______ 函数,它必须在 ______ 包中定义。main函数 ______ 参数和 ______ 返回值。程序执行顺序是:先执行包的 ______ 函数,最后执行main函数。
在for循环中启动goroutine时,如果闭包捕获循环变量,所有goroutine可能看到相同的最终值。
Go中闭包的常见用途包括?
Go语言推崇使用error返回值处理错误,而非异常机制。
📝 发现内容有误?点击此处直接编辑
长按或扫描二维码,立即体验