全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页

GO函数专题测试

20 题 40 分钟 难度:

考察知识点

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中
1
单选题

Go语言中定义函数使用哪个关键字?

A

function

B

func

C

def

D

define

2
判断题

Go语言不支持函数重载(同名函数不同参数)。

A

B

3
单选题

Go语言函数最多可以返回多少个值?

A

1个

B

2个

C

任意多个

D

最多3个

4
判断题

当多个连续参数类型相同时,可以省略前面的类型声明,只保留最后一个的类型。

A

B

5
单选题

Go中定义可变参数函数使用什么语法?

A

使用...params表示任意参数

B

使用params...type表示可变参数

C

使用*params表示指针参数

D

使用[]params表示数组参数

6
填空题

Go函数的基本语法:______ 关键字开始,后跟 ______,参数列表在 ______ 内,返回类型在括号 ______。如果没有返回值,可以 ______ 返回类型。

7
单选题

Go中定义匿名函数的方式是?

A

使用lambda关键字

B

使用func关键字但没有函数名

C

使用arrow函数语法

D

使用function关键字

8
判断题

Go的闭包可以捕获并修改外部函数的局部变量。

A

B

9
填空题

匿名函数可以通过 ______ 紧跟函数体后立即执行,语法为 _____________。闭包是指 ______ 引用了 ________,这些变量的生命周期 ______ 到闭包被释放时。

10
单选题

Go中defer语句的执行时机是?

A

在定义defer的位置立即执行

B

在函数返回之前执行

C

在函数返回之后执行

D

在程序结束时执行

11
判断题

defer语句中的参数在定义时就已计算,而非在执行时计算。

A

B

12
判断题

recover函数只能在defer函数中调用才能捕获panic。

A

B

13
填空题

Go中 ______ 函数用于触发异常,_______ 函数用于捕获异常。recover必须在 ______ 函数中调用才有效,否则返回 ______。panic触发后会执行当前函数的所有 ______ 语句,然后向上传播。

14
单选题

Go中函数可以赋值给变量,这种特性称为?

A

函数重载

B

函数作为值(函数类型)

C

函数继承

D

函数嵌套

15
填空题

Go中可以定义 ________,语法为 ________________________。函数类型可以 ______ 给变量、作为 ______ 传递、作为 ______。这体现了Go中函数是 ________ 的特性。

16
多选题

关于defer与命名返回值的配合使用,以下说法正确的是?

A

defer可以修改命名返回值

B

defer在命名返回值赋值后执行

C

defer可以读取最终的返回值

D

匿名返回值不能被defer修改

E

建议使用命名返回值配合defer做错误处理

17
填空题

Go程序的入口函数是 ______ 函数,它必须在 ______ 包中定义。main函数 ______ 参数和 ______ 返回值。程序执行顺序是:先执行包的 ______ 函数,最后执行main函数。

18
判断题

在for循环中启动goroutine时,如果闭包捕获循环变量,所有goroutine可能看到相同的最终值。

A

B

19
多选题

Go中闭包的常见用途包括?

A

创建工厂函数

B

实现回调机制

C

捕获循环变量

D

实现状态封装

E

替代全局变量

20
判断题

Go语言推崇使用error返回值处理错误,而非异常机制。

A

B

← 上一个试卷 GO内存管理与性能优化专题测试
下一个试卷 → GO初级技能认证测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库