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
相关推荐
m0_617493941 小时前
Python OpenCV 孔洞检测与缺陷分析详解与实战
开发语言·python·opencv
hsg772 小时前
简述:Rust、GeoRust、自主研发GIS平台
开发语言·后端·rust
承渊政道2 小时前
飞算Java炫技赛:Java×Unity数字孪生园区平台的从零落地记录
java·开发语言·unity·技术分享·vibe coding·飞算javaai·飞算java ai炫技赛
wdfk_prog8 小时前
嵌入式面试真题第 10 题:高优化等级下共享状态可见性、内存模型与系统级同步设计
java·linux·开发语言·面试·职场和发展·架构·c
谭光志10 小时前
Vibe Coding 时代,程序员该何去何从
前端·后端·ai编程
GoGeekBaird10 小时前
我用 BeeWeave 跑完了一次完整写作闭环
后端·github
仿生狮子11 小时前
别再说“全栈”了,AI 时代团队只认这 5 种人
前端·人工智能·后端
许彰午11 小时前
95_Python内存管理与垃圾回收
开发语言·python
多加点辣也没关系12 小时前
JavaScript|第13章:原始类型的方法
开发语言·javascript·ecmascript