Go语言学习——3、Go语言的流程控制语句

一、概述

        Go语言的流程控制语句基本上继承了C/C++语言的所有流程控制语句。Go语言没有while和do...while语句,只能用for循环实现。

        流程控制语句主要包括:条件判断语句(if和switch)、循环控制语句(for、break和continue)和跳转语句(goto)。

二、条件判断语句(if和switch)

1、if判断

        if判断语句的语法格式:

        if 表达式1 {
			代码块1
		}else if 表达式2 {
			代码块2
		}else{
			代码块3
		}

        当表达式1执行结果为true,执行代码块1,否则对表达式2进行判断;若表达式2执行结果为true,执行代码块2,否则执行代码块3。

        if判断语句中else if语句和else语句都是可选的,根据具体情况添加或去除。

        注意:表达式后的左括号必须与表达式在同一行中,不然程序编译时会报错。

举例:

func main() {
	a := 1
	if a>1 {
		fmt.Println(a,"> 1")
	}else if a == 1 {
		fmt.Println(a,"= 1")
	}else {
		fmt.Println(a,"< 1")
	}
}

2、switch分支语句

        switch语句常使用于大量不同条件执行不同代码块,每一个条件对应一个case分支。每一个switch语句只能包含一个default分支,若没有找到符合条件的case分支,会默认执行default分支语句中的代码块。switch语句语法格式如下:

    switch var {
		case value1:
			代码块1
		case value2:
			代码块2
		default:
			代码块3
	}

        变量var可以是任意类型值,但是value1和value2必须是与var相同类型的值。每个case分支后可以跟多个可能符合条件的值,使用逗号隔开,例如:case value1,value2

举例:

func example01()  {
	fmt.Println("example01.......")
	switch 2 {
	case 1:
		fmt.Println("该数字是1")
	case 2:
		fmt.Println("该数字是2")
	case 3:
		fmt.Println("该数字是3")
	default:
		fmt.Println("该数字不是1、2、3")
	}
	fmt.Println("-----------------\n")
}

        默认情况下,switch匹配成功后就不会执行其他的case,如果我们需要无条件的强制执行后面的case,需要使用fallthrough关键字。

举例:

func example02() {
	fmt.Println("example02.......")
	switch  {
	//true 肯定执行
	case true:
		fmt.Println("true")
		fallthrough
	//false 肯定不执行,但因为上一个case语句加了fallthrough标签,所以也会执行
	case false:
		fmt.Println("false")
		//fallthrough
	default:
		fmt.Println("默认")
	}
	fmt.Println("----------------")
}

三、循环控制语句(for、break和continue)

1、for循环语句

        Go语言中的循环逻辑通过for关键字实现。Go语言没有while关键字,不存在while循环。

循环体中的代码会不断的被执行,直到条件表达式的结果为false,程序才会继续执行for循环之后的代码。for循环中初始语句、条件表达式和赋值表达式都是可选的。for循环语法格式如下:

for 初始语句;条件表达式;赋值表达式{
    循环体
}

实例:

func main() {
	for i := 1; i <= 5; i++ {
		fmt.Println(i)
	}
}

2、break跳出循环语句

        break语句可以用来结束for循环,如果不带标签,则默认跳出最内层的for循环

实例:

func example1()  {
	fmt.Println("不带标签的break语句")
	i := 1
	for  {
		for  {
			if i>5 {
				fmt.Println("跳出最内层for循环")
				break
			}
			fmt.Println(i)
			i++
		}
		fmt.Println("跳出最外层for循环")
		break
	}
	fmt.Println("--------------\n")
}

break语句后面添加标签,表示退出标签对应的代码块逻辑

实例: 

func example2()  {
	fmt.Println("使用带标签的break语句,直接跳出最外层for循环")
	i := 1
	OuterLoop:
		for  {
			for  {
				if i>5 {
					break OuterLoop  //跳出OuterLoop标签对应的循环
				}
				fmt.Println(i)
				i++
			}
		}
}

3、continue继续循环语句

        continue语句可以立即结束当前循环体中的逻辑,开始下一次循环。和break语句类似,continue语句后也可以跟标签,表示开始标签所对应的循环。

实例:

func main() {
OuterLoop:
	for i := 0; i < 2; i++ {
		for j := 0; j < 3; j++ {
			if j == 1 {
				fmt.Println(i, j)
				continue OuterLoop
			}
		}
	}
}

四、跳转语句(goto)

        goto语句用于代码间的无条件跳转,一般情况下,不建议使用goto语句,过多的goto语句会破坏程序结构,使程序可读性变差。goto语句的语法格式如下:

goto 标签

实例:

func main() {
	fmt.Println("hello")
	goto sign
	fmt.Println("无效代码块")

sign:
	fmt.Println("world")
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值