笔记整理全部整理于文档库页面 点我前往

程序流程控制

顺序控制

从上到下 顺序执行 中间没有任何的判断和跳转

分支控制

单分支控制

1
2
3
4
5
6
func main()}{
var num = 233
if num > 1{
fmt.Println("num > 1")
}
}

双分支控制

双分支控制只会执行其中一个分支

1
2
3
4
5
6
7
8
func main(){
var num = 233
if num > 1 {
fmt.Println("num > 1")
}else{
fmt.Println("num < 1")
}
}

多分支控制

多分支结构中 else不是必须的,多分支结构只能有一个执行入口

1
2
3
4
5
6
7
8
9
10
func main()}{
var gender string = "女装大佬"
if gender == "Male" {
fmt.Println("Male")
}else if gender == "Famale"{
fmt.Println("Female")
}else{
fmt.Println("多来点")
}
}

嵌套分支

在一个分支结构中嵌套了完整的另一个分支结构,我们又称套娃,不过嵌套分支建议控制在3层以内

1
2
3
4
5
6
7
8
9
10
11
12
13
14
func main()}{
var gender string = "Male"
var dress string = "Pantyhose"
if gender == "Male" {
fmt.Println("Male")
if dress != "T-shirt"{
fmt.Println("Normal")
}else{
fmt.Println("多来点")
}
}else{
fmt.Println("Famele")
}
}

Switch 分支控制

  • Switch 后面可以不带表达式 可以类似 if-else分支结构来使用
  • Default语句不是必须的
  • switch后可以接任何东西 常量 变量 表达式等等

Switch 还是 if?

我的理解是,如果需要判断的东西不多,而且涉及具体数值的可以用switch,比较方便,区间判断或者布尔类型的判断可以用IF

1
2
3
4
5
6
7
8
9
10
11
12
func main(){
var month int = 5
switch {
case month > 1 && month < 4:
fmt.Println("Spring")
case month > 4 && month < 7 :
fmt.Println("Summer")
//....
default:
fmt.Println("wrong month")
}
}

For 循环控制

for循环四要素: 循环变量初始化 - 循环条件 - 循环体 - 循环变量迭代

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
func main(){
i := i
// i := 1 初始化循环
for i <= 10{
// i <= 10 循环条件
i++
// i++ 循环变量迭代
fmt.Println("i = ", i)
}

k := 1
//无限循环 搭配Break使用
for{
if k < 10{
fmt.Println("k = ", k)
}else{
break
}
k++
}
}

Break语句

break语句可以通过标签来表明要终止的是哪一层语句块,如果不设置标签,则会跳出最近的for循环

1
2
3
4
5
6
7
8
9
10
func main(){
label1:
for i := 1; i < 10; i++ {
label2:
for k := 1; k < 4; k++ {
break label2
}
fmt.Println("j = ", j)
}
}

Continue 语句

Continue语句用于结束本次循环继续执行下一次循环,同样可以通过标签来指明要跳过哪一层循环

1
2
3
4
5
6
7
8
9
10
11
func main(){
label1:
for i := 1; i < 10; i++{
label2:
for k := 1; k < 4; k++{
if k == 2{
continue label2
}
}
}
}

Goto 语句

Goto语句可以无条件的跳转到程序中指定的行,通过标签指明要跳到哪里

1
2
3
4
5
6
7
8
9
func main(){
var name string = "Tony"
if name == "Tom"{
goto label1
}

label1:
fmt.Println("its Tom")
}

Return 语句

用于在方法或者函数中跳出所在方法或函数

1
2
3
4
func hello(name string) string{
var res = "Hello " + name
return res
}