4、go的流程控制

if单分支

	var count int = 20
	if count < 30 {
		fmt.Println("库存不足")
	}
	// 另一种写法: if后面可以并列加入变量定义, 使用分号;隔开
	if a := 20; a < 30 {
		fmt.Println("库存不足a")
	}

if双分支

	var count int = 30
	if count < 30 {
		fmt.Println("库存不足")
	} else {
		fmt.Println("库存足够")
	}
	// 另一种写法: if后面可以并列加入变量定义, 使用分号;隔开
	if a := 30; a < 30 {
		fmt.Println("库存不足a")
	} else {
		fmt.Println("库存刚好够")
	}

if多分支

虽然用但分支也可以,但是后面的其他单分支逻辑也会走,所以不如用多分支

	var score int = 97
	if score >= 90 {
		fmt.Println("成绩为A级别")
	} else if score >= 80 {
		fmt.Println("成绩为B级别")
	} else if score >= 70 {
		fmt.Println("成绩为C级别")
	} else if score >= 60 {
		fmt.Println("成绩为D级别")
	} else {
		fmt.Println("成绩为E级别")
	}

switch分支

go里面的switch没有break

	var score int = 90
	switch score / 10 {
	case 10:
		fmt.Println("S级")
	case 9:
		fmt.Println("A级")
	case 8:
		fmt.Println("B级")
	case 7:
		fmt.Println("C级")
	case 6:
		fmt.Println("D级")
	default:
		fmt.Println("E级")
	}
	
	// 写法2:case可以给多个值,使用逗号, 隔开
	var score int = 100
	switch score / 10 {
	case 10, 9:
		fmt.Println("A级")
	case 8, 7:
		fmt.Println("B级")
	case 6:
		fmt.Println("C级")
	default:
		fmt.Println("E级")
	}
	
	// 写法3: 在switch后面定义变量,记得要加分号;
	switch score := 9; {
	case score >= 9:
		fmt.Println("A级") 
	case score >= 7:
		fmt.Println("B级") 
	case score >= 6:
		fmt.Println("C级")
	default:
		fmt.Println("E级")
	}
	
	// 写法4:fallthrough关键字可以让执行下面一个分支
	var score int = 100
	switch score / 10 {
	case 10, 9:
		fmt.Println("A级")	// 会打印
		fallthrough
	case 8, 7:
		fmt.Println("B级")	// 因为上面的case加了fallthrough, 所以下面的一个case也会打印
	case 6:
		fmt.Println("C级")
	default:
		fmt.Println("E级")
	}

for循环

	var sum int
	// 注意for里面定义变量的写法
	for i := 1; i <= 5; i++ {
		sum += 1
	}
	fmt.Println(sum) // 5
	
	// 死循环写法
	for {
		fmt.Println("lalalala~~~~")
	}
	
	// for range 用法
	// 如果写for循环打印字符
	var str string = "hello golang"
	// len函数是取字符长度的
	for i := 0; i < len(str); i++ {
		fmt.Printf("%c \t", str[i]) // h 	e 	l 	l 	o 	  	g 	o 	l 	a 	n 	g
	}

	// 方式2: for range
	// 语法:str是要遍历的值,使用range关键字,值被value接收,索引被i接收
	for i, value := range str {
		fmt.Printf("索引:%d, 值:%c \n", i, value)
	}
	// 打印:
	// 索引:1, 值:e 
	// 索引:2, 值:l 
	// 索引:3, 值:l 
	// 索引:4, 值:o 
	// 索引:5, 值:  
	// 索引:6, 值:g 
	// 索引:7, 值:o 
	// 索引:8, 值:l 
	// 索引:9, 值:a 
	// 索引:10, 值:n 
	// 索引:11, 值:g 
	
	
	// break细节		continue也是一样的使用
	// 正常使用跳出当前循环内的一个循环,外层循环还在继续循环
	for i := 1; i <= 5; i++ {
		for j := 1; j <= 5; j++ {
			fmt.Printf("i: %v, j: %v \n", i, j)
			if i == 1 && j == 1 {
				break
			}
		}
	}

	// 使用标签结束具体的循环,continue也可以这样使用
lable1:
	for i := 1; i <= 5; i++ {
		for j := 1; j <= 5; j++ {
			fmt.Printf("i: %v, j: %v \n", i, j)
			if i == 1 && j == 1 {
				break lable1
			}
		}
	}
posted @ 2022-11-25 15:58  aBiu--  阅读(6)  评论(0编辑  收藏  举报