
9.流程控制
流程控制
程序的流程控制结构一共有三种: 顺序结构, 选择结构, 循环结构
顺序结构: 从上到下, 逐行执行, 默认的逻辑
选择结构: 条件满足某些代码才会执行
- if
- switch
- select
循环结构: 条件满足某些代码会被反复执行0-n次
- for
1.if语句
条件语句需要开发者通过指定一个或多个条件, 并通过测试条件是否为true来决定是否执行指定语句, 并在条件为false的情况再执行另外的语句.
下图展示了程序语言中条件语句的结构
基本用法
package main
import "fmt"
func main() {
//分数
var score int = 90
// a b c d
if score >= 90 && score <= 100 {
fmt.Println("A")
} else if score >= 80 && score < 90 {
fmt.Println("B")
} else if score >= 70 && score < 80 {
fmt.Println("C")
} else if score >= 60 && score < 70 {
fmt.Println("D")
} else {
fmt.Println("不及格")
}
}
if嵌套语句
if 布尔表达式1{
/*在布尔表达式 1 为true是执行*/
if 布尔表达式2{
/*在布尔表达式 2 为true时执行*/
}
}
应用
package main
import "fmt"
func main() {
// 验证密码, 再次输入密码
var a, b int
var pwd int = 20221020
//用户的输入
fmt.Print("请输入密码: ")
fmt.Scan(&a)
//业务: 验证密码是否正确
if a == pwd {
fmt.Print("请再次输入密码")
fmt.Scan(&b)
if b == pwd {
fmt.Println("登录成功了")
} else {
fmt.Println("登录失败了, 第二次密码错误")
}
} else {
fmt.Println("登录失败, 密码错误")
}
}
2.switch
switch语句用于基于不同条件执行不同动作, 每一个case分支都是唯一的,从上至下逐一测试,直到匹配为止.
package main
import "fmt"
func main() {
var score int = 90
switch score {
case 90:
fmt.Println("A")
case 80:
fmt.Println("B")
case 50, 60, 70:
fmt.Println("C")
default:
fmt.Println("D")
}
//switch 默认的条件是 bool = true
switch {
case false:
fmt.Println("false")
case true:
fmt.Println("true")
default:
fmt.Println("其他")
}
}
switch语句执行的过程从上到下, 直到找到匹配项, 匹配项后面也不需要再加break, switch默认情况下case最后自带break语句
fallthrough 贯穿;直通
switch默认情况下匹配成功后就不会执行其他case, 如果我们需要执行后面的case, 可以使用fallthrough穿透case使用fallthrough会强制执行后面的case语句, fallthrough不会判断下一条case的表达式是否为true.
package main
import "fmt"
func main() {
a := false
switch a {
case false:
fmt.Println("1,case条件为false")
fallthrough
case true:
if a == false {
break //终止case穿透
}
fmt.Println("2,case条件为false")
}
}
3.for
在不少实际问题中有许多具体规律性的重复操作, 因此在程序中就需要重复执行某些语句
for循环是一个循环控制结构, 可以执行指定次数的循环.
package main
import "fmt"
func main() {
//循环10次
//for 条件起始值; 循环条件; 控制变量自增或者自减
for i := 1; i <= 10; i++ {
fmt.Println(i)
}
i := 1
for i <= 10 {
i++
fmt.Println(i)
}
//死循环
for {
}
//计算1到10的数字之和
sum := 0
for i := 1; i <= 10; i++ {
sum += i
}
fmt.Println(sum)
}
打印一个方阵
package main
import "fmt"
func main() {
for j := 0; j < 5; j++ {
for i := 1; i <= 5; i++ {
fmt.Print("* ")
}
fmt.Println()
}
}
打印99乘法表
package main
import "fmt"
//使用for循环打印99乘法表
func main() {
for j := 1; j <= 9; j++ {
for i := 1; i <= j; i++ {
fmt.Printf("%d*%d=%d\t", i, j, i*j)
}
fmt.Println()
}
}
break 结束当前整个循环
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i == 5 {
break
}
fmt.Println(i)
}
}
continue 结束当次循环
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i == 5 {
continue
}
fmt.Println(i)
}
}
4.String
什么是String
Go语言中的字符串是一个字节的切片, 可以通过将其内容封装在""中来创建字符串,Go中的字符串是Unicode兼容的, 并且是UTF-8编码
字符串是一些字节的集合.
package main
import "fmt"
func main() {
str := "Hello zjzaki"
fmt.Println(str)
//获取字符串的长度
fmt.Println("字符串的长度", len(str))
//获取指定的字节
fmt.Println("字节打印: ", str[0])
fmt.Printf("%c", str[0])
//for
for i := 0; i < len(str); i++ {
fmt.Printf("%c\n", str[i])
}
//for range 循环, 遍历数组, 切片
//返回下标和对应的值
for i, v := range str {
fmt.Print(i)
fmt.Printf("%c", v)
}
//string不能修改
str[2] = 'A'
}
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果