7 控制结构

[TOC]

控制结构

go运行时从main函数开始逐条向下执行,通过一些内置语法糖进行分支跳转,如有条件的跳转if else,无条件跳转go to。

for 循环

go 内置的循环语法糖只有 for 循环一种,没有while、do while

  • 可以通过 break 打断当前层for循环。

  • continue 跳过当前次循环。

  • for {}

func main() {
	i := 0
	for {
		i++
		if 50 == i {
		    continue // 跳出这次循环不往下执行
		}
		fmt.Printf("第%d次循环\n",i)
		if 100 == i {
			break // 打断循环
		}
	}
}
  • for 条件 {}

  • for 表达式1;条件;表达式2 {}

  • for k,v := range 集合{}

  • 集合可以是数组、slice、string、map、chan。

条件判断 if else

条件判断

  • if 条件 {}

  • if 表达式;条件 {}

  • if 条件 {} else if {} else {}

switch

switch根据传入参数执行符合条件的分支。

  • case检测条件进入分支,可以使用“,”隔开配置多个条件。

  • case后面不需要break,fallthrough击穿执行下一层case。

  • default语句在所有case不符合条件时执行default。

  • switch

标签和跳转 break、continue、goto

使用标签标识一个位置(必须在函数内),用于break、continue、goto跳转。

  • break 从 for、switch、select中跳转到标签。多用于打断多重循环,break跳转到循环外标签是不会再进循环。

  • continue 跳出当前次循环,跳转到外层标签但依然会再次进入循环。

  • goto 跳转到函数内任何位置

return 结束函数、方法的执行

return 也会引发控制流程的跳转,用于函数、方法的退出并可携带返回值。

  • return需要注意的是它并不是一个原子性操作,这在一个函数或方法中return与defer一起使用时会有一个陷阱。

Last updated