首页/ 学科题库/ golang/ GO函数专题
golang 专题精讲

GO函数专题

1 篇文章 22 道配套习题

GO函数专题

专题说明

本专题系统讲解Go语言函数的基础知识,从函数定义语法到参数返回值处理,从匿名函数闭包到defer延迟执行,从panic/recover机制到函数作为值使用,全面覆盖Go函数核心概念,适合Go语言入门学习者掌握函数编程基础。

学习目标

  1. 掌握Go函数的基本定义语法和特性
  2. 理解函数参数传递机制(值传递)和参数简化写法
  3. 掌握多返回值、命名返回值和可变参数函数
  4. 理解匿名函数与闭包的概念和常见用途
  5. 掌握defer的执行时机、顺序和常见应用场景
  6. 理解panic/recover机制及适用场景
  7. 掌握函数作为值和高阶函数的使用方法

学习内容

本专题涵盖以下核心知识点:

函数定义与声明

  • func关键字定义函数
  • Go不支持函数重载
  • 函数基本语法结构
  • main函数与init函数的特点

函数参数与返回值

  • 多返回值特性(任意数量)
  • 参数类型简化写法(相邻同类型可省略)
  • 可变参数函数(...type语法)
  • 命名返回值(自动初始化、可被defer修改)
  • 参数传递方式(值传递,指针实现引用效果)

匿名函数与闭包

  • 匿名函数定义(func关键字无函数名)
  • 闭包捕获外部变量特性
  • 闭包常见用途(工厂函数、回调、状态封装)
  • goroutine中的闭包陷阱

延迟执行defer

  • defer执行时机(函数返回前)
  • defer执行顺序(后进先出LIFO)
  • defer参数预计算特性
  • defer常见用途(关闭资源、解锁、记录时间)

panic与recover

  • panic触发异常机制
  • recover捕获异常(必须在defer中)
  • panic/recover适用场景
  • Go的错误处理哲学(error而非异常)

函数作为值与高阶函数

  • 函数类型定义(type Name func(params) returns)
  • 函数赋值给变量
  • 函数作为参数传递
  • 函数作为返回值
  • 高阶函数应用场景

学习建议

  1. 循序渐进:先掌握基本语法,再学习高级特性(闭包、defer)
  2. 实践验证:编写代码验证defer执行顺序和闭包捕获特性
  3. 理解原理:理解Go参数值传递的本质,避免混淆引用传递
  4. 最佳实践:掌握panic/recover的正确使用场景,避免滥用

配套习题(22 题)

参考答案在文末
判断题
1
判断题

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

A

对

B

错

2
判断题

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

A

对

B

错

3
判断题

Go中init函数是特殊的函数,会在包加载时自动执行,无需手动调用。

A

对

B

错

4
判断题

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

A

对

B

错

5
判断题

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

A

对

B

错

6
判断题

高阶函数是指接收函数作为参数或返回函数作为结果的函数。

A

对

B

错

7
判断题

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

A

对

B

错

8
判断题

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

A

对

B

错

单选题
9
单选题

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

A

函数重载

B

函数作为值(函数类型)

C

函数继承

D

函数嵌套

10
单选题

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

A

function

B

func

C

def

D

define

11
单选题

Go中命名返回值的主要优势是什么?

A

减少函数调用开销

B

可以被defer修改,简化代码

C

自动初始化为零值

D

以上都是

12
单选题

Go函数参数传递的方式是?

A

只支持值传递

B

只支持引用传递

C

值传递,但可以通过指针实现引用传递效果

D

自动选择值传递或引用传递

13
单选题

Go中panic的作用是?

A

输出错误日志

B

终止当前函数并触发异常处理流程

C

返回错误信息给调用者

D

等待用户输入处理错误

14
单选题

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

A

使用lambda关键字

B

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

C

使用arrow函数语法

D

使用function关键字

15
单选题

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

A

1个

B

2个

C

任意多个

D

最多3个

16
单选题

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

A

在定义defer的位置立即执行

B

在函数返回之前执行

C

在函数返回之后执行

D

在程序结束时执行

17
单选题

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

A

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

B

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

C

使用*params表示指针参数

D

使用[]params表示数组参数

多选题
18
多选题

Go中defer的常见用途包括?

A

关闭文件资源

B

解锁互斥锁

C

记录函数执行时间

D

循环中使用defer释放资源

E

错误处理

19
多选题

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

A

创建工厂函数

B

实现回调机制

C

捕获循环变量

D

实现状态封装

E

替代全局变量

填空题
20
填空题

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

21
填空题

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

22
填空题

多个defer语句按 (LIFO) 顺序执行,即 定义的defer 执行。defer语句会在函数 返回前 执行,即使函数发生 panic 也会执行所有defer。

参考答案
1.正确 2.正确 3.正确 4.正确 5.正确 6.正确 7.正确 8.正确 9.B 10.B 11.D 12.C 13.B 14.B 15.C 16.B 17.B 18.A;B;C 19.A;B;C;D 20.func;函数名;括号 21.panic;recover;defer 22.后进先出;最后;最先
想在手机上刷这套专题的真题?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别二维码,即可解锁本专题全部配套练习与错题本。
了解产品 App
← 上一个专题 GO内存管理与性能优化专题 下一个专题 → GO变量与常量专题