go中的语句块

时间:2016-06-14 21:05:33

标签: go

我不确定它的正确名称是什么(以及如何搜索它),但我只是查看了一些代码并看到它组织在{}'内部的语句中。秒。我想知道支持这样的分组语句的原因是什么?

代码如下所示:

// Check horizontal
{
    left_to_win := 3

    stop_1 := false
    stop_2 := false
    for x := 1; x <= 4; x++ {
        // ....
    }
}

// Check vertical
{
    left_to_win := 3

    stop_1 := false
    stop_2 := false

    for x := 1; x <= 4; x++ {
        // ...
    }
}

// Check diagonal bottom to top
{
    left_to_win := 3

    stop_1 := false
    stop_2 := false

    for x := 1; x <= 4; x++ {
        // ...
    }
}

在具体示例中,似乎可以轻松地将其重构为单个实用程序函数。这个功能的名称是什么,有没有很好的时间使用它?

1 个答案:

答案 0 :(得分:1)

这些大括号正在为局部变量定义更具体的范围。在您的情况下,每个范围都声明" ".join(new_sentence) stop_1stop_2。如果没有额外的花括号,你会得到一个编译器错误,说你正在重新声明或定义那些变量,因为你正在使用在一个语句中声明和赋值的简写left_to_win。在这种情况下,代码可以被写入相反,只需在初始声明中使用:=,然后在:=中使用=进行后续分配,这将消除对大括号定义的范围的需要。

有关详细信息,请参阅here