全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 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
单选题

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
多选题

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

A

创建工厂函数

B

实现回调机制

C

捕获循环变量

D

实现状态封装

E

替代全局变量

10
单选题

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

A

在定义defer的位置立即执行

B

在函数返回之前执行

C

在函数返回之后执行

D

在程序结束时执行

11
判断题

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

A

B

12
多选题

Go中defer的常见用途包括?

A

关闭文件资源

B

解锁互斥锁

C

记录函数执行时间

D

循环中使用defer释放资源

E

错误处理

13
单选题

Go中panic的作用是?

A

输出错误日志

B

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

C

返回错误信息给调用者

D

等待用户输入处理错误

14
判断题

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

A

B

15
填空题

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

16
单选题

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

A

函数重载

B

函数作为值(函数类型)

C

函数继承

D

函数嵌套

17
判断题

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

A

B

18
判断题

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

A

B

19
判断题

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

A

B

20
单选题

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

A

只支持值传递

B

只支持引用传递

C

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

D

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

21
填空题

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

22
单选题

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

A

减少函数调用开销

B

可以被defer修改,简化代码

C

自动初始化为零值

D

以上都是

← 上一个专题 GO内存管理与性能优化专题
下一个专题 → GO变量与常量专题

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

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

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

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