學習Golang語言(5)
來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
1、for
Go 只有一種迴圈結構——`for` 迴圈。
基本的 for 迴圈除了沒有了 `( )` 之外(甚至強制不能使用它們),看起來跟 C 或者 Java 中做的一樣,而 `{ }` 是必須的。
2、for(續)
跟 C 或者 Java 中一樣,可以讓前置、後置語句為空白。
3、for 是 Go 的 “while”
基於此可以省略分號:C 的 while 在 Go 中叫做 `for`。
4、死迴圈
如果省略了迴圈條件,迴圈就不會結束,因此可以用更簡潔地形式表達死迴圈。
5、if
if 語句除了沒有了 `( )` 之外(甚至強制不能使用它們),看起來跟 C 或者 Java 中的一樣,而 `{ }` 是必須的。
(耳熟嗎?)
6、if 的便捷語句
跟 for 一樣,`if` 語句可以在條件之前執行一個簡單的語句。
由這個語句定義的變數的範圍僅在 if 範圍之內。
(在最後的 return 語句處使用 v 看看。)
7、if 和 else
在 if 的便捷語句定義的變數同樣可以在任何對應的 else 塊中使用。
8、switch
一個結構體(`struct`)就是一個欄位的集合。
除非以 fallthrough 語句結束,否則分支會自動終止。
9、switch 的執行順序
switch 的條件從上到下的執行,當匹配成功的時候停止。
(例如,
switch i {
case 0:
case f():
}
當 i==0 時不會調用 `f`。)
注意:Go playground 中的時間總是從 2009-11-10 23:00:00 UTC 開始, 如何校正這個值作為一個練習留給讀者完成。
10、沒有條件的 switch
沒有條件的 switch 同 `switch true` 一樣。
這一構造使得可以用更清晰的形式來編寫長的 if-then-else 鏈。
11、defer
defer 語句會延遲函數的執行直到上層函數返回。
延遲調用的參數會立刻產生,但是在上層函數返回前函數都不會被調用。
12、defer 棧
延遲的函數調用被壓入一個棧中。當函數返回時, 會按照後進先出的順序調用被延遲的函數調用。