流程控制
文章目录
- 流程控制
- 一、if 语句
- 1.if 嵌套语句
- 二、switch 语句
- 三、for 循环
- 四、string
程序的流程控制结构一具有三种:顺序结构,选择结构,循环结构
-
顺序结构:从上到下,逐行执行。默认的逻辑
-
选择结构:条件满足某些代码才会执行
-
if
-
switch
-
select ,后面 channel 再讲
-
-
循环结构:条件满足某些代码会被反复执行0-N次
- for
一、if 语句
条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为false的情况在执行另外的语句。
下图展示了程序语言中条件语句的结构:
package main
import "fmt"
func main() {
// 分数
var score int = 66
if score >= 90 && score <= 100 {
fmt.Println("优秀")
} else if score >= 80 && score < 90 {
fmt.Println("良好")
} else if score >= 60 && score < 80 {
fmt.Println("及格")
} else {
fmt.Println("不及格")
}
}
输出
1.if 嵌套语句
if 布尔表社式 1 {
/* 在布尔表达式 1 为 true 3:执行 */
if 布尔表达式 2 {
/* 在布尔表达式 2 true 时执行 */
}
}
package main
import "fmt"
func main() {
var one, two int
// 初始密码
var pwd int = 12345678
// 接收用户输入密码
fmt.Print("请输入密码:")
fmt.Scan(&one)
// 功能:验证密码是否正确
if one == pwd {
fmt.Print("请再次输入密码:")
fmt.Scan(&two)
if two == pwd {
fmt.Println("登录成功")
} else {
fmt.Println("第二次输入密码错误,登录失败,请重新输入密码……")
}
} else {
fmt.Println("输入密码错误,登录失败,请重新输入密码……")
}
}
输出
二、switch 语句
switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上至下逐一测试,直到匹配为止。
switch var1 {
case test1:
...
case test2:
...
defauIt:
...
}
switch语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break.。switch默认情况下 case 最后自带 break 语句
package main
import "fmt"
func main() {
var score string = "D"
// 匹配
switch score {
case "A":
fmt.Println("等级为A,成绩在90~100范围内")
case "B":
fmt.Println("等级为B,成绩在80~90范围内")
case "C":
fmt.Println("等级为C,成绩在60~79范围内")
default:
fmt.Println("等级为D,成绩在0~59范围内")
}
// switch 默认条件 bool = true
switch {
case false:
fmt.Println("false")
case true:
fmt.Println("true")
default:
fmt.Println("其他")
}
}
输出
fallthrough 贯穿,直通
switch默认情况下匹配成功后就不会执行其他case,如果我们需要执行后面的case,可以使用 fallthrough
穿透case使用 fallthrough 会强制执行后面的 case
语句,fallthrough不会判断下条case的表达结果是否为true.
package main
import "fmt"
func main() {
a := false
// switch 默认条件 bool = true
switch a {
case false:
fmt.Println("false")
fallthrough // case 穿透,不管下一个条件是否满足,都会执行
case true:
fmt.Println("true")
default:
fmt.Println("其他")
}
}
输出
package main
import "fmt"
func main() {
a := false
// switch 默认条件 bool = true
switch a {
case false:
fmt.Println("false")
fallthrough // case 穿透,不管下一个条件是否满足,都会执行
case true:
if a == false {
break // 终止 case 穿透
}
fmt.Println("true")
default:
fmt.Println("其他")
}
}
输出
三、for 循环
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。for 循环是一个循环控制结构,可以执行指定次数的循环。
package main
import "fmt"
func main() {
// for 条件的起始值;循环条件;控制变量自增或自减
// for ;循环条件;
// for {} 无限循环
i := 1
for {
fmt.Println(i)
i++
}
sum := 0
// for 给控制变量赋值初值,循环条件给控制变量增量或减量\
// 计算 1 到 10 的数字之和
for i := 1; i <= 10; i++ {
// 循环体
sum += i
}
fmt.Println(sum)
}
栗子:输出一个10*10的方阵
package main
import "fmt"
func main() {
// i 控制行, j 控制列
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
fmt.Print("* ")
}
fmt.Println()
}
}
输出
栗子:九九乘法表
package main
import "fmt"
func main() {
// i 控制行, j 控制列
for i := 1; i < 10; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("%d*%d=%d \t", j, i, j*i)
}
fmt.Println()
}
}
输出
break 结束当前整个循环
package main
import "fmt"
func main() {
for i := 1; i <= 6; i++ {
if i == 4 {
break
}
fmt.Println(i)
}
}
continue 结束本次循环
package main
import "fmt"
func main() {
for i := 1; i <= 6; i++ {
if i == 4 {
continue
}
fmt.Println(i)
}
}
输出
四、string
什么是String
Go中的字符串是一个字节的切片,可以通过将其内容封装在""中来创建字符串,Go中的字符串是 Unicode 兼容的,并日是 UTF-8 编码。字符串是一些字节的集合。
package main
import "fmt"
func main() {
str := "hello,guan"
fmt.Println(str)
// 获取字符串的长度 len
fmt.Println("字符串长度为:", len(str))
// 获取指定的字节
fmt.Println("字节打印:", str[4])
fmt.Printf("%c", str[4])
fmt.Println()
for i := 0; i < len(str); i++ {
fmt.Printf("%c\n", str[i])
}
// for range 循环,遍历数组、切片....
// 返回下标和对应的值,使用这个值就行了
for i, v := range str {
fmt.Print(i)
fmt.Print("--")
fmt.Printf("%c", v)
fmt.Println()
}
}