【基本流程控制】1. if语句

Go语言-if语句

    Go语言的流程控制主要包括条件分支、循环和并发。在本章,咱们先来谈谈基本的流程控制语句。具体到本小节,咱们将说起if语句。并发

    if语句通常会由关键字if、条件表达式和由花括号包裹的代码块组成。所谓代码块,便是包含了若干表达式和语句的序列。在Go语言中,代码块必须由花括号包裹。另外,这里的条件表达式是指其结果类型是bool的表达式。一条最简单的if语句能够是:spa

if 100 > number { 
    number += 3
}

    这里的标识符number能够表明一个int类型的值。这条if语句的意思是:若是number的值小于100,那么就把其值增长3。我还能够在此之上添加else分支,就像这样:code

if 100 > number {
    number += 3
} else {
    number -= 2
}

    else分支的含义是,提供在条件不成立(具体到这里是number的值不小于100)的状况下须要执行的操做。除此以外,if语句还支持串联。请看下面的例子:  作用域

if 100 > number {
    number += 3
} else if 100 < number {
    number -= 2
} else {
    fmt.Println("OK!")
}

    能够看到,上述代码很像是把多条if语句串接在一块儿了同样。这样的if语句用于对多个条件的综合判断。上述语句的意思是,若number的值小于100则将其加3,若number的值大于100则将其减2,若number的值等于100则打印OK!
  
    注意,咱们至此还未对number变量进行声明。上面的示例也所以不能经过编译。咱们固然能够用单独的语句来声明该变量并为它赋值。可是咱们也能够把这样的变量赋值直接加入到if子句中。示例以下:编译

if number := 4; 100 > number {
    number += 3
} else if 100 < number {
    number -= 2
} else {
    fmt.Println("OK!")
}

    这里的number := 4被叫作if语句的初始化子句。它应被放置在if关键字和条件表达式之间,并与前者由空格分隔、与后者由英文分号;分隔。注意,咱们在这里使用了短变量声明语句,即:在声明变量number的同时为它赋值。这意味着这里的number被视为一个新的变量。它的做用域仅在这条i语句所表明的代码块中。也能够说,变量number对于该if语句以外的代码来讲是不可见的。咱们若要在该if语句之外使用number变量就会形成编译错误。
   
    另外还要注意,即便咱们已经在这条if语句所表明的代码块以外声明了number变量,这里的语句number := 4也是合法的。请看这个例子:变量

var number int
if number := 4; 100 > number {
    number += 3
} else if 100 < number {
    number -= 2
} else {
    fmt.Println("OK!")
}

    这种写法有一个专有名词,叫作:标识符的重声明。实际上,只要对同一个标识符的两次声明各自所在的代码块之间存在包含的关系,就会造成对该标识符的重声明。具体到这里,第一次声明的number变量所在的是该if语句的外层代码块,而number := 4所声明的number变量所在的是该if语句的表明代码块。它们之间存在包含关系。所以对number的重声明就造成了。
  
    这种状况形成的结果就是,if语句内部对number的访问和赋值都只会涉及到第二次声明的那个number变量。这种现象也被叫作标识符的遮蔽。上述代码被执行完毕以后,第二次声明的number变量的值会是7,而第一次声明的number变量的值仍会是0循环

相关文章
相关标签/搜索