第三章 流程控制

本文详细介绍了Go语言中的选择结构,包括if语句、if...else...、if...elseif...else以及switch语句的用法,并通过实例展示了它们在实际编程中的应用。此外,还讲解了循环结构,如for循环和range关键字的使用,以及在循环中如何使用break和continue进行流程控制。最后,简要提到了goto语句在跳出循环时的作用。
摘要由CSDN通过智能技术生成

选择结构

选择结构我们也称为判断结构。生活中的关于判断的场景也非常多,如下:
:如果跪键盘的时间大于60分钟,那么媳妇奖励我晚饭不用做了。
在这里插入图片描述

if 语句

if

var a int = 3
if a == 3 {	//条件表达式没有括号
	fmt.Print("a==3")
}

//支持一个初始化表达式,初始化字句和条件表达式直接需要用分号分隔
if b := 3; b == 3 {
	fmt.Println("b==3")
}

if …else

if a := 3; a == 4 {
	fmt.Println("a==4")
}else { // 左大括号必须和条件语句或else在同一行
	fmt.Println("a!=4")
}

if …else if…else

if a := 3; a > 3 {
	fmt.Println("a>3")
} else if a == 3 {
	fmt.Println("a==3")
} else {
	fmt.Println("error")
}

switch语句

Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码:

var score int =90

switch score {
case 90:
	fmt.Println("优秀")
	//fallthrough
case 80:
	fmt.Println("良好")
	//fallthrough
case 50, 60, 70:
	fmt.Println("一般")
	//fallthrough
default:
	fmt.Println("差")
}

可以使用任何类型或表达式作为条件语句:

// 1
switch s1 := 90; s1 { //初始化语句;条件
case 90:
	fmt.Println("优秀")
case 80:
	fmt.Println("良好")
default:
	fmt.Println("一般")

// 2
var s2 int = 90
switch { //这里没有写条件
case s2 >= 90:	//这里写判断语句
	fmt.Println("优秀")
case s2 >= 80:	//这里写判断语句
	fmt.Println("良好")
default:
	fmt.Println("一般")
}

// 3
switch s3 := 90; {	//只有初始化语句,没有条件
case s3 >= 90:	//这里写判断语句
	fmt.Println("优秀")
case s3 >= 80:
	fmt.Println("良好")
default:	
	fmt.Println("一般")
}

循环结构

for

var i, sum int

for i = 1; i <= 100; i++ {
	sum += i
}
fmt.Println("sum = ", sum
)

range

关键字 range 会返回两个值,第一个返回值是元素的数组下标,第二个返回值是元素的值:

s := "abc"
for i := range s { //支持 string/array/slice/map。
	fmt.Printf("%c\n", s[i])
}

for _, c := range s { //忽略 index
	fmt.Printf("%c\n", c)

for i, c :=range s {
	fmt.Printf("%d, %c\n",i, c)
}

跳转语句

break 和continue

在循环里面有两个关键操作break和continue,break操作是跳出当前循环,continue是跳过本次循环。

for i := 0; i < 5; i++ {
	if 2 == i {
		//break		//break操作是跳出当前循环
		continue	//continue是跳过本次循环
	}
	fmt.Println(i)
}

注意:break可⽤于for、switch、select,⽽continue仅能⽤于for循环。

goto

用goto跳转到必须在当前函数内定义的标签:

func main()
	for i := 0; i < 5; i++ {
		for {
			fmt.Println(i)
			goto LABEL	// 跳转到标签LABEL,从标签处,执行代码
		}
	}
	
	fmt.Println("this is test")

LABEL:
	fmt.Println("it is over")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值