外部声明变量vs内部循环声明变量

时间:2019-01-23 07:04:14

标签: go

我是编程新手。我在Go中有两个示例代码,以及有关使用范围的about循环。这是第一个示例:

Program A

type Test struct {
    Text string
}

func main() {
    tests := []Test{
        Test{"Test1"},
        Test{"Test2"},
    }

    var a Test
    for _, test := range tests {
        a = test
        fmt.Println(a)
    }
}

这是第二个示例:

Program B

type Test struct {
    Text string
}

func main() {
    tests := []Test{
        Test{"Test1"},
        Test{"Test2"},
    }

    for _, test := range tests {
        a := test
        fmt.Println(a)
    }
}

在第一个示例中,在循环外部声明了“ a”,但在第二个示例中,在循环内部声明了“ a”。与其他编程语言一样,两个示例程序之间有什么区别?有没有优化差异?谢谢。

1 个答案:

答案 0 :(得分:8)

变量具有不同的scopes。最佳实践通常是最佳方法,如第二个示例所示。

应该没有优化上的差异。