9、For语句
1.for循环概念
程序的流程控制结构一共有三种: 顺序结构,选择结构,循环结构。
- 顺序结构:代码从上向下逐行的执行
- 选择结构:条件满足,某些代码才会被执行。0-1次
if语句,switch语句 - 循环结构:条件满足,某些代码会被反复的多次执行。0-n次
for语句
值得注意的是GO语言不像Java等其他语言,还有什么while、dowhile;简单一句话:一个For打天下
2.for的基本用法
/**
语法结构
for init;condition;post{
}
init:初始化语句
condition:条件判断语句
post:步进表达式
初始化语句只执行一次。在初始化循环之后,将检查该条件。
如果条件计算为true,那么仆中的循环体将被执行,然后是post语句。
post语句将在循环的每次成功迭代之后执行。在执行post语句之后,该条件将被重新检查。
如果它是正确的,循环将继续执行,否则循环终止。
*/
for i := 1; i <= 5; i++ {
fmt.Println("hello Go")
}
// fmt.Println(i)
3.for的其他写法
// 其他写法一:省略初始化语句和步进表达式
/**
for 条件语句 {
}
等同于Java中的while(条件){}语句
*/
// for j := 1; j <= 5; j++ {
// fmt.Println(j)
// }
// 变形,相当于提升了作用域
j := 1
for j <= 10 {
fmt.Println(j)
j++
}
fmt.Println(j)
// 其他写法二:省略三个表达式
/**
for{}
和Java中的写法一样,死循环
*/
for {
fmt.Println(j)
}
// 其他写法... 省略三个表达式其中的任意组合
4.for的小案例
// for循环小案例
// 1.打印100-1
for x := 100; x > 0; x-- {
fmt.Println("x:", x)
}
// 2.求1-100的和
sum := 0
for y := 1; y <= 100; y++ {
sum += y
}
fmt.Println("1-100的和为sum:", sum)
// 3.打印1-100内,能够被3整除,但是不能被5整除的数字,
// 统计被打印的数字的个数,每行打印5个
count := 0
for m := 1; m <= 100; m++ {
if m%3 == 0 && m%5 != 0 {
count++
fmt.Print("m:", m)
fmt.Print("\t")
if count%5 == 0 {
fmt.Println()
}
}
}
fmt.Println()
fmt.Println("count:", count)
5.for嵌套
// for循环嵌套
/**
案例1:
打印
*****
*****
*****
*****
*****
案例二:
九九乘法表
*/
// 案例1:
for i := 0; i < 5; i++ {
for j := 0; j < 5; j++ {
fmt.Print("*")
}
println()
}
// 案例二:
for i := 1; i <= 9; i++ {
for j := 1; j <= i; j++ {
fmt.Print(j, "*", i, "=", i*j, "\t")
}
println()
}
6.break和continue
循环控制语句,这一块和Java中一样的
- break:彻底的结束循环。。终止
- continue: 结束了某一次循环,下次继续。。中止
// break
for i := 1; i < 10; i++ {
if i == 5 {
break
}
fmt.Println(i)
}
// continue
for i := 0; i < 10; i++ {
if i == 5 {
continue
}
fmt.Println(i)
}
7.循环标签名
// 针对循环嵌套处理,取别名实现内外循环控制
out:
for i := 0; i < 10; i++ {
for j := 0; j < 5; j++ {
println(j)
if j == 2 {
// break out
continue out
}
}
}
8、打印水仙花
num := 299
geWei := num % 10
fmt.Println(geWei)
shiWei := num / 10 % 10
fmt.Println(shiWei)
baiWei := num / 100
fmt.Println(baiWei)
// 打印100-999的水仙花数
for i := 100; i <= 999; i++ {
// 拿到一个数的个位
ge := i % 10
shi := i / 10 % 10
bai := i / 100 % 10
// 复杂写法
// if i == ge*ge*ge+shi*shi*shi+bai*bai*bai {
// fmt.Print("水仙花数:", i)
// }
// math.Pow(float64(ge), 3) : 求一个数的多少次幂
if float64(i) == math.Pow(float64(ge), 3)+math.Pow(float64(shi), 3)+math.Pow(float64(bai), 3) {
fmt.Println(i)
}
}
// 打印2-1000内的素数(素数:只能被1和本身整除的数)
for i := 2; i <= 1000; i++ {
flag := true
for j := 2; j < i; j++ {
if i%j == 0 {
flag = false // 不是素数
break
}
}
if flag {
fmt.Println("是素数", i)
}
}
// 优化写法,
for i := 2; i <= 100; i++ {
flag := true
for j := 2; j < int(math.Sqrt(float64(i))); j++ {
if i%j == 0 {
flag = false // 不是素数
break
}
}
if flag {
fmt.Println("是素数", i)
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2022-03-30 MybatisPlus条件查询方法全解
2022-03-30 RabbitMQ入门到进阶(Spring整合RabbitMQ&SpringBoot整合RabbitMQ)