Перейти Объявить переменную снаружи против Объявить переменную внутри цикла - PullRequest
0 голосов
/ 23 января 2019

Я новичок в программировании. У меня есть два примера кода в Go и его цикл с использованием диапазона. Это первый пример:

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)
    }
}

В первом примере «а» объявляется вне цикла, но во втором примере «а» объявляется внутри цикла. Как и в другом языке программирования, в чем разница между двумя примерами программ? Есть ли разница в оптимизации? Спасибо.

1 Ответ

0 голосов
/ 23 января 2019

Переменные имеют разные области действия . Обычно лучше всего использовать наименьшую возможную область, как во втором примере.

Не должно быть разницы в оптимизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...