掌握 Go 语言中的循环结构:从基础到高级

一、if else(分支结构)

1、if 条件判断基本写法
Go 复制代码
package main
import (
	"fmt"
)
func main() {
	score := 65
	if score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	} else {
		fmt.Println("C")
	}
}
2、if 条件判断特殊写法
  • if 条件判断还有一种特殊的写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断
Go 复制代码
package main
import "fmt"
func main() {
	//这里的 score 是局部作用域
	if score := 56; score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	}else {
		fmt.Println("C")
		fmt.Println(score) // 只能在函数内部打印 score
	}
	// fmt.Println(score) //undefined: score
}

二、for(循环结构)

1、for 循环
1、普通 for 循环
Go 复制代码
package main
import "fmt"
func main() {
	// 打印: 0 ~ 9 的数字
	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}
}
2、外部定义 i
Go 复制代码
package main
import "fmt"
func main() {
	i := 0
	for i < 10 {
		fmt.Println(i)
		i++
	}
}
3、省略初始语句
Go 复制代码
package main
import "fmt"
func main() {
	i := 0
	for ; i < 10; i++ {
		fmt.Println(i)
	}
}
2、打印 0-10 的所有偶数
Go 复制代码
package main
import "fmt"
func main() {
	// 0 2 4 6 8
	for i := 0; i < 10; i++ {
		if i%2 == 0 {
			fmt.Println(i)
		}
	}
}
3、嵌套循环
Go 复制代码
package main
import "fmt"
func main() {
	for i := 1; i <= 9; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%vx%v=%v \t", i, j, i*j)
		}
		fmt.Println()
	}
}
/*
1x1=1
2x1=2 	2x2=4
3x1=3 	3x2=6 	3x3=9
4x1=4 	4x2=8 	4x3=12 	4x4=16
5x1=5 	5x2=10 	5x3=15 	5x4=20 	5x5=25
6x1=6 	6x2=12 	6x3=18 	6x4=24 	6x5=30 	6x6=36
7x1=7 	7x2=14 	7x3=21 	7x4=28 	7x5=35 	7x6=42 	7x7=49
8x1=8 	8x2=16 	8x3=24 	8x4=32 	8x5=40 	8x6=48 	8x7=56 	8x8=64
9x1=9 	9x2=18 	9x3=27 	9x4=36 	9x5=45 	9x6=54 	9x7=63 	9x8=72 	9x9=81
*/
4、模拟 while 循环
  • Go 语言中是没有 while 语句的,我们可以通过 for 代替
Go 复制代码
package main
import "fmt"
func main() {
	k := 1
	for { // 这里也等价 for ; ; {
		if k <= 10 {
			fmt.Println("ok~~", k)
		} else {
			break   //break 就是跳出这个 for 循环
		}
		k++
	}
}
5、for range(键值循环)
Go 复制代码
package main

import "fmt"

func main() {
    str := "abc上海"
    for index,var := range str{
        fmt.Printf("索引:%d,值=%c \n",index, val)
    }
}
/*
索引=0, 值=a
索引=1, 值=b
索引=2, 值=c
索引=3, 值=上
索引=6, 值=海
*/

三、switch case

  • 使用 switch 语句可方便地对大量的值进行条件判断
1、case 一般用法
Go 复制代码
package main
import "fmt"
func main() {
	score := "B"
	switch score {
		case "A":
			fmt.Println("非常棒")
		case "B":
			fmt.Println("优秀")
		case "C":
			fmt.Println("及格")
		default:
			fmt.Println("不及格")
	}
}
2、case 语句多个值
Go 复制代码
package main
import "fmt"
func main() {
	n := 2
	switch n {
	case 1, 3, 5, 7, 9:
		fmt.Println("奇数")
	case 2, 4, 6, 8:
		fmt.Println("偶数")
	default:
		fmt.Println(n)
	}
}
3、fallthrough 语句
  • fallthrough 语法可以执行满足条件的 cast 的下一个 case,是为了兼容C 语言中的 case 设计
Go 复制代码
package main
import "fmt"
func main() {
	s := "a"
	switch {
	case s == "a":
		fmt.Println("a")
		fallthrough
	case s == "b":
		fmt.Println("b")
	case s == "c":
		fmt.Println("c")
	default:
		fmt.Println("...")
	}
}
/*
a
b

四、break、continue、goto

1、break 跳出单循环
Go 复制代码
package main
import "fmt"
func main() {
	k := 1
	for { // 这里也等价 for ; ; {
		if k <= 10 {
			fmt.Println("ok~~", k)
		} else {
			break   //break 就是跳出这个 for 循环
		}
		k++
	}
}
2、跳出多重循环
  • 在多重循环中,可以用标号 label 标出想 break 的循环
Go 复制代码
package main
import "fmt"
func main() {
	lable2:
	for i := 0; i < 2; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				break lable2
			}
			fmt.Println("i j 的值:", i, "-", j)
		}
	}
}
/*
i j 的值: 0 - 0
i j 的值: 0 - 1
 */
3、continue(继续下次循环)
Go 复制代码
package main
import "fmt"
func main() {
	for i := 0; i < 2; i++ {
		for j := 0; j < 4; j++ {
			if j == 2 {
				continue
			}
			fmt.Println("i j 的值", i, "-", j)
		}
	}
}
/*
i j 的值 0 - 0
i j 的值 0 - 1
i j 的值 0 - 3
i j 的值 1 - 0
i j 的值 1 - 1
i j 的值 1 - 3
 */
4、goto(跳转到指定标签)
Go 复制代码
package main
import "fmt"
func main() {
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				goto breakTag  // // 设置退出标签
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
	return
	breakTag:	// 标签
		fmt.Println("结束 for 循环")
}
/*
0-0
0-1
结束 for 循环
 */
相关推荐
可涵不会debug6 分钟前
C语言文件操作:标准库与系统调用实践
linux·服务器·c语言·开发语言·c++
百流42 分钟前
scala文件编译相关理解
开发语言·学习·scala
Channing Lewis42 分钟前
flask常见问答题
后端·python·flask
Channing Lewis44 分钟前
如何保护 Flask API 的安全性?
后端·python·flask
Evand J2 小时前
matlab绘图——彩色螺旋图
开发语言·matlab·信息可视化
深度混淆3 小时前
C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合
开发语言·c#
雁于飞3 小时前
c语言贪吃蛇(极简版,基本能玩)
c语言·开发语言·笔记·学习·其他·课程设计·大作业
wenxin-4 小时前
NS3网络模拟器中如何利用Gnuplot工具像MATLAB一样绘制各类图形?
开发语言·matlab·画图·ns3·lr-wpan
数据小爬虫@6 小时前
深入解析:使用 Python 爬虫获取苏宁商品详情
开发语言·爬虫·python