2015-06-04 73 views

回答

4

請記住,for循環與while循環相同。 您的代碼可以在其他語言中被改寫爲

sum := 1 
while(sum < 10) { 
    sum += sum 
} 
fmt.Println(sum) 

for循環,有3個部分。

for(initial statement ; condition ; end statement usually iterate)

這相當於

initial statement 
while(condition) { 
    Stuff here 
    End iteration statement 
} 

你的循環可以寫成withiut前置和後置聲明的原因是因爲你的代碼的其他部分指定它們。

+0

實際上,在你可以做同樣的事情:for for sum <10 {sum + = sum}' – OneOfOne

2

它的行爲就像在其他語言while,你不需要兩個分號:

sum := 1 
for sum < 10 { 
    sum += sum 
} 
fmt.Println(sum) 
2

For循環有3個元素:初始化語句,條件檢查,變量變化。

for <initialization statement>; <condition check>; <variable change>{ 
    <actual body> 
} 
  • 初始化語句只執行一次循環開始時。根據它的名字初始化一些東西(在許多情況下,你會遍歷一個變量)。如果省略,則它不執行任何操作
  • 條件檢查將驗證條件是否爲真。如果不是,則循環停止。如果它被省略,那麼它總是如此。
  • 變量更改是在循環的每次迭代期間修改變量。大多數情況下,迭代變量會增加/減少,但您可以隨心所欲。如果它被省略,什麼也不做

在這個解釋之後,你可以看到這個循環在初始化和後期條件階段中什麼都不做。

你也不需要在這裏使用分號。這將是足夠的。

sum := 1 
for sum < 10 { 
    sum += sum 
} 

你甚至可以編寫這樣一個循環:for {}這將永遠不會停止執行,或執行類似while循環:

t := 10 
for t > 0{ 
    t-- 
} 

注意這裏面的初始化,條件和改變階段,你可以使用許多表達式(不只是一個)。所以,用一個簡單的while循環,你可以這樣做:

for f1, f2, n := 1, 1, 10; n > 0; f1, f2, n = f2, f1 + f2, n - 1{ 
    fmt.Println(f1) 
} 

它創建了一個斐波那契數go playground。顯示這不是因爲這是寫它的最好方式,而是因爲它是可能的。