【基本流程控制】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循環

相關文章
相關標籤/搜索