For Loop pre和post语句为空

时间:2015-06-04 20:22:31

标签: go

在Golang中,这意味着for循环的pre和post语句是空的,如下例所示:

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

3 个答案:

答案 0 :(得分: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
}

你的循环可以用pre和post语句编写的原因是因为你已经在代码的其他部分指定了它们。

答案 1 :(得分:2)

在其他语言中它的行为类似于while,您不需要两个分号:

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

答案 2 :(得分: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 。显示这不是因为这是写它的最佳方式,而是因为它是可能的。