Fixes #198
This commit is contained in:
chai2010
2016-01-18 11:22:04 +08:00
parent 884ada9cd0
commit 9666211cd7
71 changed files with 107 additions and 105 deletions

View File

@@ -72,7 +72,7 @@ for initialization; condition; post {
這里需要註意for循環的兩邊是不需要像其它語言一樣寫括號的。併且左大括號需要和for語句在同一行。
initialization部分是可選的如果你寫了這部分的話在for循環之前這部分的邏輯會被執行。需要註意的是這部分必是一個簡單的語句也就是説是一個簡短的變量聲明一個賦值語句或是一個函數調用。condition部分必是一個結果爲boolean值的表達式在每次循環之前語言都會檢査當前是否滿足這個條件如果不滿足的話便會結束循環post部分的語句則是在每次循環迭代結束之後被執行之後conditon部分會在下一次執行前再被執行依此往複。當condition條件里的判斷結果變爲false之後循環卽結束。
initialization部分是可選的如果你寫了這部分的話在for循環之前這部分的邏輯會被執行。需要註意的是這部分必是一個簡單的語句也就是説是一個簡短的變量聲明一個賦值語句或是一個函數調用。condition部分必是一個結果爲boolean值的表達式在每次循環之前語言都會檢査當前是否滿足這個條件如果不滿足的話便會結束循環post部分的語句則是在每次循環迭代結束之後被執行之後conditon部分會在下一次執行前再被執行依此往複。當condition條件里的判斷結果變爲false之後循環卽結束。
上面提到是for循環里的三個部分都是可以被省略的如果你把initialization和post部分都省略的話那麽連中間隔離他們的分號也是可以被省略的比如下面這種for循環就和傳統的while循環是一樣的
@@ -115,7 +115,7 @@ func main() {
}
```
每一次循環迭代range都會返迴一對結果當前迭代的下標以及在該下標處的元素的值。在這個例子里我們不需要這個下標但是因爲range的處理要求我們必要同時處理下標和值。我們可以在這里聲明一個接收index的臨時變量來解決這個問題但是Go語言又不允許隻聲明而在後續代碼里不使用這個變量如果你這樣做了編譯器會返迴一個編譯錯誤。
每一次循環迭代range都會返迴一對結果當前迭代的下標以及在該下標處的元素的值。在這個例子里我們不需要這個下標但是因爲range的處理要求我們必要同時處理下標和值。我們可以在這里聲明一個接收index的臨時變量來解決這個問題但是Go語言又不允許隻聲明而在後續代碼里不使用這個變量如果你這樣做了編譯器會返迴一個編譯錯誤。
在Go語言中應對這種情況的解決方法是用空白標識符就是上面那個下劃線_。空白標識符可以在任何你接收自己不需要處理的值時使用。在這里我們用它來忽略掉range返迴的那個沒用的下標值。大多數的Go程序員都會像上面這樣來寫類似的os.Args遍歷由於遍歷os.Args的下標索引是隱式自動生成的可以避免因顯式更新索引導致的錯誤。