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

Go 语言大白话入门 6 - 判断与循环
判断与循环本章目标这章把两件核心能力练起来判断和重复执行。 你学完要能自己写出if、for、switch并且看到报错能自己改。常见坑位先把最常见的坑看一眼后面不容易卡住。if条件外面加了圆括号写法不符合 Go 习惯。for三段式里把条件写反导致一次都不执行。break和continue混用结果和预期完全不一样。range返回的索引和值搞反。以为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可拆成三段i : 1初始化只执行一次。i 5循环条件每轮开始前检查。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.break和continue中途控制循环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 条能独立完成就算过关。能写出if / else并通过改条件验证输出变化。能解释for三段式的初始化、条件、步进。能用for range遍历切片并区分索引和值。能正确使用break和continue。能用switch写多分支并理解default。