引入#
控制语句分类:
- 顺序结构
- 分支结构
- 循环结构
分支结构#
if 分支#
单分支#
基本语法
if 条件表达式 {
逻辑代码
}
只有条件表达式为 true 时,才执行 {} 的逻辑代码
- 条件表达式两边可以加 (),建议不加
- If 和条件表达式中间必须有空格
- {} 必须要有
package main
import "fmt"
func main() {
var a int = 25
var b int = 15
if a > b {
fmt.Println("a大于b")
}
//if后面可以用分号并列加入变量的定义
if a2 := 20; a2 < 10 {
fmt.Println("a小于b")
}
}
実行結果:
a大于b
双分支#
基本语法
if 条件表达式 {
逻辑代码 1
} else {
逻辑代码 2
}
* 当条件表达式为 true 时,执行逻辑代码 1,否则执行逻辑代码 2 *
func main() {
if a := 10; a > 5 {
fmt.Println("a大于5")
} else {
fmt.Println("a不大于5")
}
if b := 10; b > 15 {
fmt.Println("b大于15")
} else {
fmt.Println("b不大于15")
}
}
実行結果:
a大于5
b不大于5
多分支#
基本语法
if 条件表达式 {
逻辑代码 1
} else {
逻辑代码 2
}
......
else {
逻辑代码 n
}
* 依次执行,当有一个条件表达式为 true 时,直接执行对应的逻辑代码并结束运行,不再继续执行 *
package main
import "fmt"
func main() {
var a int = 50
if a > 10 {
fmt.Println("a大于10")
} else if a > 20 {
fmt.Println("a大于20")
} else if a > 30 {
fmt.Println("a大于30")
} else if a > 40 {
fmt.Println("a大于40")
} else {
fmt.Println("以上都不对")
}
}
実行結果:
a大于10
switch 分支#
基本语法
switch 表达式 {
case 值 1, 值 2,......:
语句块 1
Case 值 3, 值 4,......:
语句块 2
......
default:
语句块
}
* 依次执行,当有一个 case 满足表达式时,直接执行对应的语句块并结束运行,不再继续执行 *
package main
import (
"fmt"
)
func main() {
var score int = 50
switch score / 10 {
case 10:
fmt.Println("等级为A")
case 9:
fmt.Println("等级为A")
case 8:
fmt.Println("等级为B")
case 7:
fmt.Println("等级为C")
case 6:
fmt.Println("等级为D")
case 5:
fmt.Println("等级为E")
case 4:
fmt.Println("等级为E")
case 3:
fmt.Println("等级为E")
case 2:
fmt.Println("等级为E")
case 1:
fmt.Println("等级为E")
case 0:
fmt.Println("等级为E")
default:
fmt.Println("成绩有误")
}
}
実行結果:
等级为E
循环结构#
for 循环#
基本语法
for (初始表达式;布尔表达式;迭代因子){
循环体;
}
package main
import "fmt"
func main() {
//求和1+2+3+4+5
//方法1
var n1 int = 1
var n2 int = 2
var n3 int = 3
var n4 int = 4
var n5 int = 5
var sum1 int
sum1 += n1
sum1 += n2
sum1 += n3
sum1 += n4
sum1 += n5
fmt.Println(sum1)
//方法2
var sum2 int
for i := 1; i <= 5; i++ {
sum2 += i
}
fmt.Println(sum2)
}
for range#
可遍历数组,切片,字符串,map 以及通道
基本语法
for key, val := range coll {
}
import "fmt"
func main() {
var str string = "mojito"
//for i := 0; i < len(str); i++ {
// fmt.Printf("%c \n",str[i])
//}
for i, value := range str {
fmt.Printf("索引为:%d, 值为:%c \n", i, value)
}
}
実行結果:
索引为:0, 值为:m
索引为:1, 值为:o
索引为:2, 值为:j
索引为:3, 值为:i
索引为:4, 值为:t
索引为:5, 值为:o
关键字#
break#
执行本次循环再跳出整个循环
package main package main
import "fmt"
func main() {
var sum1 int
for i := 1; i <= 100; i++ {
sum1 += i
}
fmt.Println(sum1)
var sum2 int
for j := 1; j <= 100; j++ {
sum2 += j
if sum2 > 300 {
break
}
}
fmt.Println(sum2)
}
実行結果:
5050
325
continue#
跳出本次循环,再继续后面的循环
import "fmt"
func main() {
//取1-100以内被6整除的数
for i := 1; i <= 100; i++ {
if i%6 != 0 {
continue
}
fmt.Println(i)
}
}
実行結果:
6
12
18
24
30
36
42
48
54
60
66
72
78
84
90
96
goto#
跳到指定行执行
package main
import "fmt"
func main() {
if 1 == 1 {
goto a
}
fmt.Println("hello1")
fmt.Println("hello2")
fmt.Println("hello3")
fmt.Println("hello4")
fmt.Println("hello5")
fmt.Println("hello6")
fmt.Println("hello7")
a:
fmt.Println("hello8")
}
実行結果:
hello8
return#
结束当前函数不继续执行
package main
import "fmt"
func main() {
for j := 1; j < 10; j++ {
if j == 7 {
return
}
fmt.Println(j)
}
fmt.Println("hello golang")
}
実行結果:
1
2
3
4
5
6