Go语言入门系列文章目录
- Go语言入门–基础语法
- Go语言入门–流程语句
- Go语言入门–数组和切片
- 集合(Map)(咕咕咕????)
- 字符串(string)
- 函数
- 指针
- 结构体
- 方法
- 接口
- 错误
- 包
- IO操作
- 并发
- 反射
文章目录
- Go语言入门系列文章目录
- 一、程序的流程结构
- 1 条件语句-if
- 1.1 If语句
- 1.2 if变体
- 2 条件语句-switch
- 2.1switch语句
- 2.2 fallthrough
- 2.3Type Switch
- 2.4 注意事项
- 3 循环语句
- 3.1 for语句
- 3.2 for循环变体
- 3.3 多层for循环
- 3.4 注意事项
- 4 跳出循环的语句
- 4.1 break语句
- 4.2 continue语句
- 4.3 goto语句
- 总结
一、程序的流程结构
程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。
顺序结构:从上向下,逐行执行。
选择结构:条件满足,某些代码才会执行。0-1次
分支语句:if,switch,select
循环结构:条件满足,某些代码会被反复的执行多次。0-N次
循环语句:for
1 条件语句-if
1.1 If语句
语法格式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } else { /* 在布尔表达式为 false 时执行 */ } if 布尔表达式1 { /* 在布尔表达式1为 true 时执行 */ } else if 布尔表达式2{ /* 在布尔表达式1为 false ,布尔表达式2为true时执行 */ } else{ /* 在上面两个布尔表达式都为false时,执行*/ }
1.2 if变体
如果其中包含一个可选的语句组件(在评估条件之前执行),则还有一个变体。它的语法是
1
2
3
4
5
6
7if statement; condition { } if condition{ }
2 条件语句-switch
2.1switch语句
witch是一个条件语句,它计算表达式并将其与可能匹配的列表进行比较,并根据匹配执行代码块。它可以被认为是一种惯用的方式来写多个if else子句。
switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。
switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。
而如果switch没有表达式,它会匹配true
Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。
变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。
您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。
语法格式:
1
2
3
4
5
6
7
8
9switch var1 { case val1: ... case val2: ... default: ... }
2.2 fallthrough
如需贯通后续的case,就添加fallthrough
1
2
3
4
5
6
7
8
9
10switch var1 { case val1: ... case val2: ... fallthrough default: ... }
2.3Type Switch
switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际存储的变量类型。
1
2
3
4
5
6
7
8
9
10switch x.(type){ case type: statement(s); case type: statement(s); /* 你可以定义任意个数的case */ default: /* 可选 */ statement(s); }
2.4 注意事项
case后的常量值不能重复
case后可以有多个常量值
fallthrough应该是某个case的最后一行。如果它出现在中间的某个地方,编译器就会抛出错误。
3 循环语句
3.1 for语句
语法结构
1
2for init; condition; post { }
3.2 for循环变体
所有的三个组成部分,即初始化、条件和post都是可选的。
1
2
3for condition { } for { }
for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环
1
2
3
4for key, value := range oldMap { newMap[key] = value }
3.3 多层for循环
for循环中又有循环嵌套,就表示多层循环了。
3.4 注意事项
初始化语句只执行一次。在初始化循环之后,将检查该条件。如果条件计算为true,那么{}中的循环体将被执行,然后是post语句。post语句将在循环的每次成功迭代之后执行。在执行post语句之后,该条件将被重新检查。如果它是正确的,循环将继续执行,否则循环终止。
在for循环中声明的变量仅在循环范围内可用。因此,i不能在外部访问循环。
4 跳出循环的语句
4.1 break语句
break:跳出循环体。break语句用于在结束其正常执行之前突然终止for循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16package main import ( "fmt" ) func main() { for i := 1; i <= 10; i++ { if i > 5 { break //loop is terminated if i > 5 } fmt.Printf("%d ", i) } fmt.Printf("nline after for loop") }
4.2 continue语句
continue:跳出一次循环。continue语句用于跳过for循环的当前迭代。在continue语句后面的for循环中的所有代码将不会在当前迭代中执行。循环将继续到下一个迭代。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15package main import ( "fmt" ) func main() { for i := 1; i <= 10; i++ { if i%2 == 0 { continue } fmt.Printf("%d ", i) } }
4.3 goto语句
goto:可以无条件地转移到过程中指定的行。
语法结构
1
2
3
4
5goto label; .. .. label: statement;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20package main import "fmt" func main() { /* 定义局部变量 */ var a int = 10 /* 循环 */ LOOP: for a < 20 { if a == 15 { /* 跳过迭代 */ a = a + 1 goto LOOP } fmt.Printf("a的值为 : %dn", a) a++ } }
统一错误处理
多处错误处理存在代码重复时是非常棘手的,例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15err := firstCheckError() if err != nil { goto onExit } err = secondCheckError() if err != nil { goto onExit } fmt.Println("done") return onExit: fmt.Println(err) exitProcess()
总结
本文为我自己的学习笔记,记录一下方便以后查阅. 如有问题请和我联系
最后
以上就是成就红牛最近收集整理的关于Go语言入门--流程语句Go语言入门系列文章目录一、程序的流程结构总结的全部内容,更多相关Go语言入门--流程语句Go语言入门系列文章目录一、程序内容请搜索靠谱客的其他文章。
发表评论 取消回复