全部学科
Python全栈
python
NodeJS全栈
nodejs

GO流程控制专题测试

19 题 35 分钟 难度:★★

考察知识点

1. if-else条件语句

  • if语法:条件不需要括号、大括号{}必须有
  • 大括号规则:必须与if在同一行、不能省略
  • if-else链:else if和else分支
  • 初始化语句:if err := f(); err != nil {}在条件前初始化
  • 作用域:初始化变量作用域限制在if块内

2. for循环语句

  • Go特色:只有for循环、没有while和do-while
  • 标准for:for init; condition; post {}
  • 条件for:类似while、for condition {}
  • 无限for:for {}、需要break退出
  • for-range:遍历数组、切片、map、字符串、channel

3. for-range遍历

  • 数组/切片:返回索引和值for i, v := range arr
  • map:返回键和值for k, v := range m
  • 字符串:返回索引和字符(rune)for i, c := range str
  • channel:只返回值for v := range ch
  • 索引忽略:for _, v := range arr忽略索引

4. switch-case条件分支

  • switch特点:case自动break、不需要显式写
  • fallthrough:继续执行下一个case、不判断条件
  • default分支:可选、处理其他情况
  • 无表达式switch:实现if-else链、case写条件表达式
  • case多值:case 1, 2, 3:匹配多个值

5. break与continue

  • break作用:跳出循环、终止循环
  • continue作用:跳过当前迭代、继续下一次循环
  • 标签break:跳出多层循环break label
  • 标签continue:跳到外层循环continue label
  • 使用场景:条件退出、跳过处理

6. goto标签跳转

  • goto语法:跳转到标签位置
  • 标签定义:labelName:定义标签
  • 使用限制:不能跳转到其他函数、不能跳过变量声明
  • 使用场景:错误处理、跳出嵌套循环
  • 注意事项:谨慎使用、避免滥用

7. 标签(label)使用

  • 循环标签:配合break/continue跳出多层循环
  • goto标签:配合goto跳转
  • 标签命名:任意标识符、后面加冒号
  • 标签位置:必须定义在语句前
  • 作用范围:同一个函数内

8. 流程控制最佳实践

  • if简洁:条件表达式简洁、避免嵌套过深
  • for-range优先:遍历集合优先用for-range
  • switch清晰:多条件分支用switch而非if-else链
  • 避免goto:尽量不用goto、保持代码清晰
  • 标签命名:标签名清晰表达跳转目的

9. 流程控制与作用域

  • if初始化:初始化变量作用域在if块内
  • for初始化:循环变量作用域在循环内
  • for-range:每次迭代变量是同一个、需注意闭包
  • switch初始化:初始化变量作用域在switch块内

10. 流程控制与其他语言对比

  • if区别:Go不需要条件括号、C/Java需要
  • for区别:Go只有for、C/Java有for/while/do-while
  • switch区别:Go自动break、C/Java需要显式break
  • goto限制:Go不能跳过变量声明、C可以
  • 简洁性:Go流程控制语法更简洁统一
💡 参考答案在文末
判断题
1

Go的switch语句可以不带表达式,此时每个case写条件表达式,相当于if-else链的替代。

A

B

2

Go的if语句可以在条件前添加初始化语句,初始化的变量作用域仅限于if-else块内。

A

B

3

使用for range遍历切片时,range返回的值是副本,修改该值不会影响原切片元素。

A

B

4

Go的标准for循环由三个部分组成:初始化、条件、后置语句,它们用分号分隔,都可以省略。

A

B

5

Go中可以使用标签(label)配合break跳出多层嵌套循环。

A

B

6

Go使用for range遍历map时,遍历顺序是随机的,每次遍历可能得到不同的顺序。

A

B

单选题
7

Go中使用for range遍历数组、切片、map等数据结构时,range返回什么?

A

只返回索引或键

B

只返回值

C

返回索引/键和值

D

返回元素个数

8

Go的switch语句与C/Java相比,有什么不同?

A

每个case末尾需要break语句

B

每个case末尾自动break,不需要显式写

C

必须有default分支

D

case后只能是整数

9

Go中break和continue语句的作用分别是?

A

break跳出循环,continue跳过本次迭代继续下一次

B

break跳过本次迭代,continue跳出循环

C

break和continue都跳出循环

D

break和continue都跳过本次迭代

10

Go语言中if语句的条件表达式是否需要括号?

A

必须使用括号

B

不需要括号,但大括号{}必须有

C

括号和大括号都可省略

D

只在复杂条件时需要括号

11

Go语言中用于循环的关键字是?

A

for、while、do-while

B

只有for

C

for和while

D

loop

多选题
12

Go流程控制语句的特点包括?

A

只有for循环,没有while

B

if条件不需要括号

C

switch自动break

D

for range可遍历多种类型

E

可用标签跳出多层循环

13

Go switch语句的高级用法包括?

A

case可以是表达式

B

case可以匹配多个值

C

无表达式switch替代if-else链

D

type switch用于类型判断

E

fallthrough继续执行下一个case

14

Go for range可以遍历哪些数据类型?

A

数组和切片

B

map

C

字符串

D

channel

E

整数

填空题
15

Go的for range遍历:数组/切片返回 ________________________;map返回 ____________ 和 值;字符串返回 字节位置 和 字符。只需要索引时可省略 值 变量,只需要值时用 _ 忽略索引。

16

Go的 ____________ 用于 ____________ 循环, ____________ 用于 跳过 本次迭代继续 下一次 循环。多层嵌套循环可使用 标签 配合break跳出 指定 层循环。

17

Go switch语句: ____________ 分支匹配后 ____________ break,不需要 ____________ 写break。需要继续执行下一case使用 fallthrough 关键字。 default 分支可选,处理 其他 情况。无表达式switch中 case 写条件表达式。

18

Go if语句:条件 ____________ 括号, ____________ 大括号,大括号与 ____________ 必须在同一行。可在条件前写 初始化 语句,初始化变量 作用域 仅限于if-else 块 内。

19

Go for循环三种形式: ____________ 如 for i:=0; i<10; i++{}; ____________ 类似while; ____________ 需要 break 退出。for只有 一个 循环关键字,没有 while 和 do-while。

参考答案
1.正确 2.正确 3.正确 4.正确 5.正确 6.正确 7.C 8.B 9.A 10.B 11.B 12.A;B;C;D;E 13.A;B;C;D;E 14.A;B;C;D 15.索引;值;键 16.break;跳出;continue 17.case;自动;显式 18.不需要;必须有;if 19.标准for;条件for;无限for
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 GO标准库专题测试
下一套试卷 → GO运行时专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码