day03 流程控制
前言
流程控制:
- 分支判断
- if ; else if ; else
- switch case
- select : channel
- 循环
- for
- go to 跳转,当条件成立跳 某个地方执行 todo。
if
package main
import "fmt"
func main() {
/*
流程控制:
- 分支判断
- if ; else if ; else
- switch case
- select : channel
- 循环
- for
- go to 跳转,当条件成立跳 某个地方执行 todo。
*/
// if 条件判断
var num int = 15
if num > 100 {
fmt.Println("num > 100")
} else if num < 0 {
fmt.Println("num < 100")
} else {
fmt.Println("0 < num < 100")
}
// 练习 if 密码判断. 输入两次密码,第一次成功,第二次输入则二次校验,否则用户密码校验失败
fmt.Println("请输入用户名和密码:")
// scan 阻塞等待
var username string
var password1 string
var password2 string
fmt.Scan(&username)
fmt.Scan(&password1)
if password1 == "123" && username == "admin" {
fmt.Println("请再次输入密码:")
fmt.Scan(&password2)
if password2 == "123" {
fmt.Println("密码校验成功")
} else {
fmt.Println("密码二次校验失败!")
}
} else {
fmt.Println("密码校验失败!")
}
// switch case 条件判断
var num2 int = 2
switch num2 {
case 1:
fmt.Println("num2: 1")
case 2:
fmt.Println("num2: 2")
}
}
多条件 if
package main
import "fmt"
func main() {
// 分数校验
fmt.Println("请输入你的成绩:")
var score int = 60
fmt.Scan(&score)
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 if score >= 0 && score <= 60 {
fmt.Println("E")
} else {
fmt.Println("输入不合法!")
}
}
switch case
package main
import "fmt"
func main() {
/* switch case default*/
// case 可以写多个条件
var score int = 61
switch score {
case 100:
fmt.Println("A")
case 90:
fmt.Println("B")
case 80:
fmt.Println("C")
case 70:
fmt.Println("D")
case 60, 61:
fmt.Println("E")
default:
fmt.Println("未知数")
}
// switch 省略条件。 默认 条件 真true
switch {
case false:
fmt.Println("false")
case true:
fmt.Println("true")
default:
fmt.Println("default")
}
}
switch case fallthrough
// fallthrough 击穿switch case。 理解:一旦使用 fallthrough ,则会强制执行下面的case语句
// 场景: 中断case判断。 使用极少!!!
a := false
switch a {
case false:
fmt.Println("fallthrough1")
fallthrough
case true:
fmt.Println("fallthrough2")
default:
fmt.Println("fallthrough3")
}
switch case break
// switch break. 中断后续判定
b := false
switch b {
case false:
fmt.Println("break1")
if b == false {
break
}
case true:
fmt.Println("brea2")
default:
fmt.Println("break3")
}
for 循环
- 终止循环
- break : 结束整个循环,立即停止
- continue :结束当前这次循环,继续进行下一次循环
package main
import "fmt"
func main() {
/* go 中的循环 */
// for 起始init,结束end,条件condition,自增/自减
num := 0
for i := 0; i <= 10; i++ {
num += i
fmt.Println("each num and i:", num, i)
}
fmt.Println("num count:", num)
// for break continue
for i := 0; i < 10; i++ {
if i == 5 {
fmt.Println("break:终止,i:", i)
break
}
if i == 3 {
fmt.Println("contiune: 跳过,i:", i)
continue
}
fmt.Println("循环输出 i:", i)
}
// for range 循环可迭代数据结构:数组,字符串,字典...
for i, i2 := range "hello word" {
fmt.Println("下标:", i, "打印字符:", i2)
}
// for 作业 打印 5 * 5 的 矩阵:
for i := 0; i < 6; i++ {
for j := 0; j < 6; j++ {
fmt.Print("* ")
}
fmt.Println()
}
// 死循环: for {}
for {
fmt.Println("Hello go")
}
}
go for 打印菱形
package main
import "fmt"
func main() {
// for 作业
// 1. 9 * 9 乘法口诀表
for i := 1; i < 10; i++ {
for j := 1; j < 10; j++ {
if j <= i {
fmt.Printf("%d * %d = %d ; ", j, i, i*j)
}
}
fmt.Println()
}
// 2. 菱形
for i := 1; i < 6; i++ {
for j := 1; j <= 6-i; j++ {
fmt.Print(" ")
}
for j := 0; j < 2*i-1; j++ {
fmt.Print("*")
}
fmt.Println()
}
for i := 4; i >= 1; i-- {
for j := 1; j <= 6-i; j++ {
fmt.Print(" ")
}
for j := 0; j < 2*i-1; j++ {
fmt.Print("*")
}
fmt.Println()
}
}