Go 语言大白话入门 6 - 判断与循环

判断与循环

本章目标

这章把两件核心能力练起来:判断和重复执行。 你学完要能自己写出 ifforswitch,并且看到报错能自己改。

常见坑位

先把最常见的坑看一眼,后面不容易卡住。

  1. if 条件外面加了圆括号,写法不符合 Go 习惯。
  2. for 三段式里把条件写反,导致一次都不执行。
  3. breakcontinue 混用,结果和预期完全不一样。
  4. range 返回的索引和值搞反。
  5. 以为 switch 也要手动写 break

正文步骤

1. if:让程序会做选择
复制代码

package main import "fmt" func main() { age := 20 // 年龄 if age >= 18 { fmt.Println("你已经成年") } else { fmt.Println("你还未成年") } }

结论很简单:条件成立走 if,不成立走 else

再补一条常用写法:if 里可以先定义一个临时变量。

复制代码

package main import "fmt" func main() { if score := 75; score >= 60 { fmt.Println("及格") } else { fmt.Println("不及格") } }

score 只在这个 if-else 代码块内有效。

2. for:让程序按规则重复
复制代码

package main import "fmt" func main() { for i := 1; i <= 5; i++ { fmt.Println("第", i, "次输出") } }

for i := 1; i <= 5; i++ 可拆成三段:

  1. i := 1:初始化(只执行一次)。
  2. i <= 5:循环条件(每轮开始前检查)。
  3. i++:步进(每轮结束后执行)。

还有两种常见写法:

复制代码

package main import "fmt" func main() { // 类似 while:只有条件 count := 0 for count < 3 { fmt.Println("count:", count) count++ } // 死循环:通常配合 break for { fmt.Println("执行一次就退出") break } }

Go 没有 while,一个 for 覆盖全部循环场景。

3. for range:遍历一组数据
复制代码

package main import "fmt" func main() { names := []string{"小李", "小王", "小张"} for index, name := range names { fmt.Println(index, name) } }

range 每轮给你两个值:

  • index:索引(从 0 开始)
  • name:当前元素

如果不要索引,用 _ 丢掉:

复制代码

for _, name := range names { fmt.Println(name) }

4. breakcontinue:中途控制循环
复制代码

package main import "fmt" func main() { // break:满足条件后直接退出整个循环 users := []string{"小王", "小李", "小张", "小赵"} for _, user := range users { if user == "小张" { fmt.Println("找到了:", user) break } } // continue:跳过本轮,继续下一轮 numbers := []int{1, 2, 3, 4, 5, 6} for _, number := range numbers { if number%2 == 0 { continue // 偶数跳过 } fmt.Println("奇数:", number) } }

一句话记忆:

  • break 是"整轮结束"。
  • continue 是"本轮跳过"。
5. switch:分支多时更清楚
复制代码

package main import "fmt" func main() { score := 85 switch { case score >= 90: fmt.Println("优秀") case score >= 60: fmt.Println("及格") default: fmt.Println("不及格") } }

按具体值匹配也很常见:

复制代码

package main import "fmt" func main() { day := 2 switch day { case 1: fmt.Println("周一") case 2: fmt.Println("周二") default: fmt.Println("未知") } }

注意:Go 的 switch 默认每个 case 自动结束,不需要手动写 break

6. 两个补充:取余和多重赋值

先看取余 %,判断奇偶时非常高频。

复制代码

package main import "fmt" func main() { fmt.Println(10 % 3) // 1 fmt.Println(4 % 2) // 0 }

再看多重赋值,一行交换两个变量。

复制代码

package main import "fmt" func main() { left, right := 1, 2 left, right = right, left fmt.Println(left, right) // 2 1 }

示例代码(最小可运行整合版)

下面这段把本章核心点串在一起,复制可直接运行。

复制代码

package main import "fmt" func main() { score := 78 // 1) 判断 if score >= 60 { fmt.Println("成绩及格") } else { fmt.Println("成绩不及格") } // 2) 三段式循环 for i := 1; i <= 3; i++ { fmt.Println("第", i, "轮") } // 3) range + continue numbers := []int{1, 2, 3, 4, 5, 6} oddCount := 0 for _, number := range numbers { if number%2 == 0 { continue } oddCount++ fmt.Println("奇数:", number) } // 4) switch switch { case oddCount >= 4: fmt.Println("奇数很多") case oddCount >= 2: fmt.Println("奇数适中") default: fmt.Println("奇数较少") } }

过关标准(自检清单)

对照下面 6 条,能独立完成就算过关。

  1. 能写出 if / else,并通过改条件验证输出变化。
  2. 能解释 for 三段式的初始化、条件、步进。
  3. 能用 for range 遍历切片,并区分索引和值。
  4. 能正确使用 breakcontinue
  5. 能用 switch 写多分支,并理解 default
相关推荐
高级程序源6 小时前
django大学生创新创业项目管理系统94923-计算机课程设计、毕业设计
javascript·vue.js·spring boot·后端·python·django·课程设计
Sam_Deep_Thinking6 小时前
new Thread()之后发生了什么?
java·后端·面试·程序员
泡海椒6 小时前
规则引擎对比:JQuick-Java vs Drools 轻量场景选型对比
java·开发语言
泡泡鱼(敲代码中)7 小时前
Python 容器类型学习笔记:列表、元组、字典、集合
开发语言·笔记·python·pycharm
步行cgn7 小时前
Spring util 命名空间详解
java·后端·spring
2501_933670797 小时前
平台招商运营校招能力模型:数据分析、SQL与增长场景拆解
开发语言
打工仔折腾 AI8 小时前
普通摄像头接入AI识别:绿联NAS部署Frigate监控实战
人工智能·后端·python·性能优化·ai agent 实战
菜鸟~noob2338 小时前
【Bonjour】华为Peerium架构深度解析:从冯·诺依曼到百万处理器“一台计算机”,附MATLAB性能仿真【含matlab代码,可直接运行】
开发语言·matlab·华为·peerium
白远山8 小时前
24小时自助健身房系统开发实战:从需求分析到完整指南
java·开发语言·数据库·数据挖掘·需求分析