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()

	}
}

posted @ 2024-07-02 00:10  染指未来  阅读(3)  评论(0编辑  收藏  举报