1.1.5 流程控制语句

一、if...else(分支结构)

  1. if是用于测试某个测试条件(布尔型或逻辑型)的语句

  2. 为代码可读性,不建议多if...else组合使用

  3. 注意:

    1. 关键字ifelse之后的左大括号{必须和关键字在同一行

    2. 如果使用了if...else结构,前段代码的右大括号}必须和if...else关键字在同一行

二、for循环

  1. Go语言的for循环有三种:

    1. 个C的for一样:

      for init; condition; post{}

      init:一般为赋值表达式,给控制变量赋初始值

      condition:关系表达式或逻辑表达式,循环控制条件

      post:一般为赋值表达式,给控制变量增量或减量

    2. 和C的while一样

      for condition {}

      condition:关系表达式或逻辑表达式,循环控制条件

    3. 和C的for(;;)一样

      for {}
  2. for语句执行过程如下

    1. 先对表达式for init; condition; post{}赋初始值

    2. 判断赋值表达式init是否满足给定条件,若值为真,满足循环条件,则执行循环体内的语句,然后执行post,进入第二次循环,再判断condition;如果condition值为假,不满足条件,就终止for循环,执行循环体外语句

  3. 注意:

    1. 左大括号{必须与for处于同一行

    2. Go语言中的for循环和C语言一样,都允许在循环条件中定义和初始化变量。唯一区别:Go语言不支持以逗号为间隔的多个赋值语句,必须使用平行赋值的方式来初始化多个变量

    3. Go语言的for循环同样支持使用continuebreak来控制循环,但它提供了一个更高级的break,可以选择中断哪一个循环

  4. for循环中,如果循环被breakgotoreturnpanic等语句强制退出,则之后的语句不会被执行

三、for...range语句

  1. for...range循环结构是Go语言特有的一种迭代结构,可以遍历数组、切片、字符串、map及通道(channel)

  2. for...range循环结构的一般形式如下:

四、switch...case语句

  1. Go语言的switch...case语句比C语言的更加通用,表达式的值不必为常量,甚至不必为整数。case按照从上往下的顺序进行求值,直找到匹配的项。可以将多个if...else语句改写成switch...case语句

  2. Go语言改进了switch...case的语法设计:casecase之间是独立的代码块,不需要通过break语句跳出当前case代码块以避免执行到下一行

  3. Go语言还支持一些新写法,比如一分支多值、分支表达式

    1. 一分支多值:即多个case分支放在一块,举个例子:

      结果:good name

      注意:一分支多值case表达式使用逗号分割

    2. 分支表达式:case语句后既可以是常量,也可以和if一样添加表达式,举个例子:

      注意:这种情况时,switch后面不要再需要加判断变量

五、goto语句

  1. 在Go语言中,可通过goto语句跳转标签,进行代码间的无条件跳转

  2. goto语句在快速跳出循环、避免重复退出方面也有一定的帮助

  3. 示例如下:

六、break语句

  1. Go语言中的break语句可以结束forswitchselect的代码块

  2. 还可以在break语句后面添加标签,表示退出某个标签对应的代码块,添加的标签必须定义在对应的forswitchselect得代码块上

    结果:

七、continue语句

  1. Go语言中continue语句可以结当前循环,开始下一次循环的迭代过程

  2. continue仅限在for循环内使用

  3. continue语句后添加标签时,表示开始标签对应的循环

    结果:

Last updated