视频: https://www.bilibili.com/video/BV16r4y1A7jG/

条件分支

至今为止,我们接触的程序结构都是顺序结构,是从上到下,依次执行的:

下面介绍另外一种结构——选择结构:

根据条件的不同,使程序走向不同的流程

在Golang中,这里的条件是指布尔值(bool),所以下面先介绍一下条件操作符

条件操作符一览

条件操作符是指作用于一个或两个值,结果是布尔值的操作符。可以细分成两种:

  • 关系运算符
    • == 等于
    • != 不等于
    • > 大于
    • >= 大于或等于
    • < 小于
    • <= 小于或等于
  • 逻辑运算符(作用于布尔值)
    • && 逻辑与,两者皆为true时,结果为true,否则为false(具有短路特性)
    • || 逻辑或,两者其一为true时,结果为true,否则为false(具有短路特性)
    • ! 取反,true变false,false变true

看个例子:

If语句

单独的If语句有如下格式:

condition(条件)必须是一个布尔值,如果为true时,则执行花括号内的代码块,否则不执行

举个例子,比如成绩大于90分为"优秀":

成绩大于或等于70且小于90为"中等":

这里的 score >= 70 && score < 90 最终结果是一个布尔值true,因为:

  1. score >= 70 为 true
  2. score < 90 为 true
  3. true && true 为 true

等价于下面例子:

If-Else

If-Else语句有如下格式:

condition(条件)必须是一个布尔值,如果为true时,则执行if代码块,否则执行else代码块

举个例子,成绩大于60为"及格",否则"不及格":

尝试改动score的值,看看流程的走向:

If-ElseIf-Else

If-ElseIf-Else语句有如下格式:

condition(条件)必须是一个布尔值,可以有多个else if,从上到下依次检测条件是否为true,为true则执行对应代码块

比如一个完整的成绩判别大概是这样的:

尝试改动score的值,看看流程的走向:

If的前置语句

Golang允许在条件判断之前先执行一个语句(statement),称为前置语句,格式如下:

举个例子:

先执行了fmt.Println(1),判别条件1<2为true继而执行了fmt.Println(2)

但Gopher们(Golang开发者)一般用前置语句来声明初始化变量,比如:

但是上面代码与下面代码效果是不一样的:

试一下,注意观察不同之处:

  1. 在if前置语句中声明的变量作用域只在if代码块中有效(变量作用域的知识后面再讲)
  2. 在if前置语句中只能用短声明语法来声明变量

总结

下节介绍Golang中另一种选择结构 —— Switch语句

bye~

原文地址: https://nbody1996.gitee.io/becoming_gopher/posts/010/

读后有收获可以请作者喝咖啡~