当前位置:网站首页>Go (一) 基础部分2 -- if条件判断,for循环语句
Go (一) 基础部分2 -- if条件判断,for循环语句
2022-08-03 05:11:00 【天才小楼楼】
一、if 条件语句
1.1、if 条件判断,Go语言中if条件判断的格式如下:
if 表达式1 {
分支1
}else if 表达式2 {
分支2
} else{
分支3
}func main() { // 例子1: szq := 100 if szq >= 90 { fmt.Println("A") } else if szq > 75 { fmt.Println("B") } else { fmt.Println("C") } // 例子2: // if条件判断特殊写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断: if score := 65; score >= 90 { fmt.Println("A") } else if score > 75 { fmt.Println("B") } else { fmt.Println("C") } }
二、for 循环语句
2.1、for 循环,(Go 语言中的所有循环类型均可以使用for关键字来完成 ,只有for循环,无其他循环),for循环可以通过break、goto、return、panic语句强制退出循环。
for 初始语句;条件表达式;结束语句{
循环体语句
}func main() { // 常用:条件表达式返回true时循环体不停地进行循环,直到条件表达式返回false时自动退出循环。 for i := 0; i <= 10; i += 1 { fmt.Println(i) } // 不常用:for循环的初始语句可以被忽略,但是初始语句后的分号必须要写,例如: b := 0 for ; b < 10; b += 1 { fmt.Println(b) } // 不常用:for循环的初始语句和结束语句都可以省略,例如: c := 0 for c < 10 { fmt.Println(c) c += 1 } }
2.2、循环控制语句 break continue
1.不使用标记,break 结束本层循环
func main() { // 不使用标记,break只结束本层的循环 fmt.Println("---- break ----") for i := 1; i <= 3; i++ { fmt.Printf("i: %d\n", i) for i2 := 11; i2 <= 13; i2++ { fmt.Printf("i2: %d\n", i2) break } } } //---- break ---- //i: 1 //i2: 11 //i: 2 //i2: 11 //i: 3 //i2: 11
2.使用标记,break 结束标记内的所有循环
func main() { // 使用标记,break掉标记内的所有循环 fmt.Println("---- break label ----") re: for i := 1; i <= 3; i++ { fmt.Printf("i: %d\n", i) for i2 := 11; i2 <= 13; i2++ { fmt.Printf("i2: %d\n", i2) break re } } } //---- break label ---- //i: 1 //i2: 11
3.不使用标记,continue 跳过此次循环,进入下一次循环
// 例子1: func main() { for a := 10; a < 20; a += 1 { if a == 15 { /* 当a=15时,跳过此次循环,进入下一次循环 */ continue } fmt.Printf("a 的值为 : %d\n", a) } } // 例子2: func main() { fmt.Println("---- continue ---- ") for i := 1; i <= 3; i++ { fmt.Printf("i: %d\n", i) for i2 := 11; i2 <= 13; i2++ { fmt.Printf("i2: %d\n", i2) continue } } } //---- continue ---- //i: 1 //i2: 11 //i2: 12 //i2: 13 //i: 2 //i2: 11 //i2: 12 //i2: 13 //i: 3 //i2: 11 //i2: 12 //i2: 13
4.使用标记,continue 跳出当前循环,从标记处开始下一次循环
// 使用标记,跳出当前循环,从标记处开始下一次循环 fmt.Println("---- continue label ----") re: for i := 1; i <= 3; i++ { fmt.Printf("i: %d\n", i) for i2 := 11; i2 <= 13; i2++ { fmt.Printf("i2: %d\n", i2) continue re } } //i: 1 //i2: 11 //i: 2 //i2: 11 //i: 3 //i2: 11
2.3、嵌套循环 9*9乘法表
func main() { for num := 1; num < 10; num += 1 { for zong := 1; zong < 10; zong += 1 { fmt.Printf("%v*%v=%v\n", num, zong, num*zong) } fmt.Println("") } } // 标准版: func main() { println("切片解决九九乘法表") var num = []int{1, 2, 3, 4, 5, 6, 7, 8, 9} //定义切片 for i := 1; i < 10; i++ { for j := 1; j < i+1; j++ { value := num[j-1] * i //计算 fmt.Printf("%d*%d=%d\t", j, i, value) } fmt.Println() } }
2.4、for range (键值循环)
Go语言中可以使用for range遍历数组、切片、字符串、map 及通道(channel)。 通过for range遍历的返回值有以下规律:
1、数组、切片、字符串返回索引和值。
2、map返回键和值。
3、通道(channel)只返回通道内的值。for range例子1:循环字符
func main() { // i 表示索引 // v 表示对应的值(英文字符占1位,中文字符占3位) szq := "he沙河su" for i, v := range szq { fmt.Printf("%v %c\n", i, v) } } //0 h //1 e //2 沙 //5 河 //8 s //9 u
for range例子2:循环数组
func main() { nums := []int{1, 2, 3, 4} length := 0 for _, num := range nums { length += num println(num) } fmt.Println(length) // 10 }
for range 特殊例子:for range 数组时,如果未写参数的话,循环的次数为 len(nums)
func main() { nums := []int{1, 2, 3, 4} length := 0 // for range 数组时,如果未写参数的话,循环的次数为 len(nums) for range nums { length += 1 } fmt.Println(length) // 4 }
for range 特殊例子:for range 数组时,只写一个参数时,n的值默认为索引
func main() { nums := []int{1, 2, 3, 4} length := 0 // for range 数组时,只写一个参数时,n的值默认为索引 for n := range nums { length += n } fmt.Println(length) // 6 }
2.5、switch case 使用switch语句可方便地对大量的值进行条件判断。
func main() { finger := 8 // switch case // switch 简化大量的判断(一个变量和具体的值做比较) switch finger { case 1: fmt.Println("大拇指") case 2: fmt.Println("食指") case 3: fmt.Println("中指") case 4: fmt.Println("无名指") case 5: fmt.Println("小拇指") default: fmt.Println("无效的输入!") } // 输出结果:无效的输入! //Go语言规定每个switch只能有一个default分支。 //一个分支可以有多个值,多个case值中间使用英文逗号分隔。 n := 7 switch n { case 1, 3, 5, 7, 9: fmt.Println("奇数") case 2, 4, 6, 8: fmt.Println("偶数") default: fmt.Println(n) } // 输出结果:奇数 //分支还可以使用表达式,这时候switch语句后面不需要再跟判断变量。例如: age := 30 switch { case age < 25: fmt.Println("好好学习吧") case age > 25 && age < 35: fmt.Println("好好工作吧") case age > 60: fmt.Println("好好享受吧") default: fmt.Println("活着真好") } // 输出结果:好好工作吧 }
边栏推荐
猜你喜欢
随机推荐
C-PHY速率
IO流及其操作
High availability, two locations and three centers
Redis常用命令
飞机大战完整版
1059 C语言竞赛 (20 分)(C语言)
1054 求平均值 (20 分)
0.ROS常用命令
4.如何避免缓存穿透、缓存击穿、缓存雪崩
The problem that the rosbag tool plotjuggler cannot open rosbag
-寻找鞍点-
【Flask】Flask-SQLAlchemy的增删改查(CRUD)操作
Ali cloud object storage oss private barrels to generate links
三角形个数
快速上手 Mockito 单元测试框架
js实现一个 bind 函数
Power button 561. An array of split
2.ROS通信机制
web安全-PHP反序列化漏洞
Djiango第四次培训笔记