Go语言之顺序编程

Go语言之顺序编程

以下是笔者学习Go语言基础的代码随笔,本次练习内容为条件语句循环语句

Go 语言条件语句

Go 语言提供了以下几种条件判断语句:

语句 描述
if 语句 if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
if…else 语句 if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
if 嵌套语句 你可以在 ifelse if 语句中嵌入一个或多个 ifelse if 语句。
switch 语句 switch 语句用于基于不同条件执行不同动作。
select 语句 select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。

注意:Go 没有三目运算符,所以不支持 ?: 形式的条件判断。

Go 语言循环语句

Go 语言提供了以下几种类型循环处理语句:

循环类型 描述
for 循环 重复执行语句块
循环嵌套 在 for 循环中嵌套一个或多个 for 循环

循环控制语句

循环控制语句可以控制循环体内语句的执行过程。

GO 语言支持以下几种循环控制语句:

控制语句 描述
break 语句 经常用于中断当前 for 循环或跳出 switch 语句
continue 语句 跳过当前循环的剩余语句,然后继续进行下一轮循环。
goto 语句 将控制转移到被标记的语句。

练习代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package main

import "fmt"

func main() {
// ifFn()
// forFn()
// switchFn()
loopFn()
}

func ifFn() {
i := 2
if i == 1 {
fmt.Println("第一种方式")
}
if a, b := i, 7; a == 2 {
fmt.Println(b)
fmt.Println("第二种方式")
} else if i == 3 {

} else {

}
}

func forFn() {
// s := []int{1, 2, 4, 5, 7}
m := map[string]int{"a": 1, "b": 2}
for k, v := range m {
fmt.Println(k, v)
}
i := 4
if i == 1 {
for {
fmt.Println("第一种:无限循环,可通过break结束.")
break
}
}
if i == 2 {
a := 1
for a <= 2 {
fmt.Printf("第二种:条件循环,类似while. (a=%v) \n", a)
a++
}
}
if i == 3 {
for a := 1; a <= 2; a++ {
fmt.Printf("第三种:与第二种相同,带初始化和自增. (a=%v) \n", a)
}
}
}

func switchFn() {
i := 3
switch i {
case 1:
a := 3
switch a {
case 1:
fmt.Println("第一种方式, a==1")
case 2:
fmt.Println("第一种方式,a==2")
default:
fmt.Println("第一种方式,default")
}
case 2:
a := 2
switch {
case a == 1:
fmt.Println("第二种方式, a==1")
case a == 2:
fmt.Println("第二种方式, a==2")
default:
fmt.Println("第二种方式,default")
}
case 3:
switch a := 3; {
case a >= 1:
fmt.Println("第三种方式, a>=1")
fallthrough
case a >= 2:
fmt.Println("第三种方式, a>=2")
fallthrough
case a >= 2:
fmt.Println("第三种方式, a>=2")
fallthrough
case a >= 2:
fmt.Println("第三种方式, a>=2")
fallthrough
case a >= 2:
fmt.Println("第三种方式, a>=2")
fallthrough
default:
fmt.Println("第三种方式,default")
}
}

}

func loopFn() {
i := 0
LABEL2:
goto LABEL
LABEL:
for i < 10 {
for {
for {
i++
if i == 3 {
fmt.Println("跳过打印i=3")
continue LABEL
}
if i == 5 {
fmt.Println("goto一下")
goto LABEL2
}
if i == 7 {
fmt.Println("不打印剩下的")
break LABEL
}
fmt.Printf("i=%d\n", i)
}
}
}
}

欢迎关注我的其它发布渠道