0
点赞
收藏
分享

微信扫一扫

第二章、go语言流程控制,03_流程控制

pipu 2022-03-23 阅读 90
gogolang

if语句,switch语句,for循环,range迭代,break,continue,goto

源代码

package main

import (
	"fmt"
	"time"
)

func main() {
	//1、if语句
	s := "loss"
	//注意if语句后面的判断条件没有()
	if s == "rich" {
		fmt.Println("钱多多")
	}
	//if支持一个初始化语句,初始化语句和判断条件以分号隔开
	//此时a是局部变量
	if a := 10; a == 10 {
		fmt.Println("a == 10")
	}

	a := 11
	if a == 10 {
		fmt.Println("a == 10")
	} else {
		fmt.Println("a != 10")
	}

	b := 9
	if b == 8 {
		fmt.Println("b == 8")
	} else if b > 8 {
		fmt.Println("b > 8")
	} else if b < 8 {
		fmt.Println("b < 8")
	} else {
		fmt.Println("impossible")
	}

	//2、switch语句
	var num int
	fmt.Printf("请输入楼层:")
	fmt.Scan(&num)

	switch num {
	case 1:
		fmt.Println("按下的是1楼")
		// break //go语言保留了break关键字,跳出switch语句,不用写,默认就包含
		fallthrough //不跳出switch语句,后面的无条件执行,如果num==1,则会执行case1和case2
	case 2:
		fmt.Println("按下的是2楼")
	case 3:
		fmt.Println("按下的是3楼")
	case 4:
		fmt.Println("按下的是4楼")
	default:
		fmt.Println("按下的是xx楼")
	}
	//switch扩展1
	switch num := 3; num { //支持一个初始化语句,和变量以分号隔开
	case 1:
		fmt.Println("按下的是1楼")
	case 2:
		fmt.Println("按下的是2楼")
	case 3, 4, 5: //case后面可以跟多个值
		fmt.Println("按下的是345楼")
	case 6:
		fmt.Println("按下的是6楼")
	default:
		fmt.Println("按下的是xx楼")
	}
	//switch扩展2
	score := 85
	switch { //可以没有条件
	case score > 90: //case后面跟条件
		fmt.Println("优秀")
	case score > 80:
		fmt.Println("良好")
	case score > 70:
		fmt.Println("一般")
	default:
		fmt.Println("其他")
	}

	//3、for循环
	//for 初始化条件;条件判断;条件变化{  }
	sum := 0
	for i := 1; i <= 100; i++ {
		sum += i
	}
	fmt.Printf("sum = %d\n", sum)

	str := "abc"
	for i := 0; i < len(str); i++ {
		fmt.Printf("str[%d] = %c\n", i, str[i])
	}

	//4、range
	//迭代打印每个元素,默认返回2个值:元素的位置和元素的值
	for i, data := range str {
		fmt.Printf("str[%d] = %c\n", i, data)
	}
	for i := range str { //丢弃第二个返回值不用,只返回元素下标,也可以写成for i,_:=range str
		fmt.Printf("str[%d] = %c\n", i, str[i])
	}

	//5、break和continue
	//break is use in a loop, switch, or select
	//continue is use in a loop
	k := 0
	for {
		k++
		time.Sleep(time.Second)
		if k == 5 {
			break //跳出循环,如果嵌套多个循环,跳出最近的那个内循环
			// continue //跳出本次循环,继续执行下一次循环
		}
		fmt.Printf("k = %d\n", k)
	}

	//6、goto
	//goto可以用在任何地方,但不能跨函数使用
	fmt.Println("11111111111111")
	goto End //goto是关键字,End是用户起的名字,叫标签
	fmt.Println("22222222222222")
End:
	fmt.Println("33333333333333")
}

打印输出

a == 10
a != 10
b > 8
请输入楼层:1
按下的是1楼
按下的是2楼
按下的是345楼
良好
sum = 5050
str[0] = a
str[1] = b
str[2] = c
str[0] = a
str[1] = b
str[2] = c
str[0] = a
str[1] = b
str[2] = c
k = 1
k = 2
k = 3
k = 4
11111111111111
33333333333333
举报

相关推荐

0 条评论