【3】流程控制
文章目录
- 一、分支结构
- (一)单分支结构
- (二)分支嵌套
- (三)switch 分支控制
- 二、Golang 的循环控制
- (一)for 循环的第一种写法
- (二)for 循环的第二种写法
- (三)for 循环的第三种写法
- (四)遍历字符串举例
一、分支结构
(一)单分支结构
func main() {
// 双分支结构
var a int
if a > 10 {
fmt.Println("a")
} else { // else 不能换行
fmt.Println("b")
}
}
(二)分支嵌套
func main() {
// 分支嵌套结构
var a int
var b int
if a > 0 {
if b < 0 {
fmt.Println("b")
} else if b == 0 {
fmt.Println("a")
}
} else if a < 0 {
fmt.Println("a")
} else {
fmt.Println("b")
}
}
(三)switch 分支控制
func main() {
var a int
var b int
switch a + b { // switch 后面接表达式
case a: // 与 case 后面的值进行匹配,匹配成功后执行语句块,执行完语句块后自动跳出
fmt.Println("a")
case b:
fmt.Println("b")
case a, b: // 可以进行多个值匹配
fmt.Println("a")
default: // 如果 case 后面的值都不满足表达式,则执行 default 后面的值
fmt.Println("b")
}
}
- switch 后面可以是常量、变量、有返回值的函数、表达式,只要是值就可以了。
- switch 后面值的数据类型需要和 case 后面值的数据类型要保持一致。
- case 后面可以是一个常量、变量、或者有值的表达式。
二、Golang 的循环控制
func main() {
// for 循环控制的基本语法
for i := 10; i > 0; i-- {
println(i)
}
}
(一)for 循环的第一种写法
func main() {
// for 循环控制的基本语法
for 循环变量初始化; 循环条件判断; 循环变量迭代 {
循环体
}
}
执行步骤:
- 执行循环变量初始化;
- 执行循环条件判断;
- 条件为真再进行循环变量迭代。
(二)for 循环的第二种写法
func main() {
// for 循环控制的第二种写法
var i int = 10 // 循环变量
for i < 20 { // 循环条件
// 循环体
println(i)
// 循环迭代控制
i--
}
}
(三)for 循环的第三种写法
func main() {
// for 循环控制的第三种写法(需要配合 break 使用)
i := 10 // 循环变量
for {
if i < 10 { // 循环条件
println(i) // 循环体
} else {
i-- // 循环迭代控制
}
}
}
(四)遍历字符串举例
func main() {
// for 循环遍历字符串
pre_s := "hello world 我们"
// 存在中文字符,由于 for 循环默认遍历按照字节进行遍历,中文占用 3 个字节,直接打印有乱码,需要将字符串转化为切片类型
s := []rune(pre_s)
for i := 0; i < len(s); i++ {
fmt.Printf("index:%d,value:%c\n", i, s[i])
}
}
func main() {
s1 := "hello 我们"
// 使用 for range 时候按照字符进行取值
for index, value := range s1 {
fmt.Printf("index: %d, value: %c\n", index, value)
}
}
continue
:结束本次循环。break
:跳出当前层的整个循环。