GO流程控制专题测试
考察知识点
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流程控制语法更简洁统一
Go语言中if语句的条件表达式是否需要括号?
Go的if语句可以在条件前添加初始化语句,初始化的变量作用域仅限于if-else块内。
Go语言中用于循环的关键字是?
Go的标准for循环由三个部分组成:初始化、条件、后置语句,它们用分号分隔,都可以省略。
Go中使用for range遍历数组、切片、map等数据结构时,range返回什么?
Go使用for range遍历map时,遍历顺序是随机的,每次遍历可能得到不同的顺序。
Go的for range遍历:数组/切片返回 ______ 和 ______;map返回 ______ 和 ______;字符串返回 ________ 和 ______。只需要索引时可省略 ______ 变量,只需要值时用 ______ 忽略索引。
Go的switch语句与C/Java相比,有什么不同?
Go的switch语句可以不带表达式,此时每个case写条件表达式,相当于if-else链的替代。
Go中break和continue语句的作用分别是?
Go中可以使用标签(label)配合break跳出多层嵌套循环。
Go的 ______ 用于 ______ 循环, ________ 用于 ______ 本次迭代继续 ______ 循环。多层嵌套循环可使用 ______ 配合break跳出 ______ 层循环。
Go switch语句: ______ 分支匹配后 ______ break,不需要 ______ 写break。需要继续执行下一case使用 ___________ 关键字。 _______ 分支可选,处理 ______ 情况。无表达式switch中 ______ 写条件表达式。
Go流程控制语句的特点包括?
使用for range遍历切片时,range返回的值是副本,修改该值不会影响原切片元素。
Go if语句:条件 ______ 括号, ______ 大括号,大括号与 ______ 必须在同一行。可在条件前写 ______ 语句,初始化变量 ______ 仅限于if-else ______ 内。
Go for循环三种形式: _______ 如 for i:=0; i<10; i++{}; _______ 类似while; _______ 需要 ______ 退出。for只有 ______ 循环关键字,没有 ______ 和 ________。
Go switch语句的高级用法包括?
Go for range可以遍历哪些数据类型?
📝 发现内容有误?点击此处直接编辑
长按或扫描二维码,立即体验