Понимание переменных с инициализаторами - PullRequest
0 голосов
/ 28 марта 2019

Я изучаю основы го (голанг).

Кажется, я не могу понять, как работают переменные с инициализаторами.

package main

import "fmt"

var i, j int = 100000, 5

func main() {
    fmt.Println(j)
}

Когда я распечатываю j, я получаю 5 вместо 100000, почему это так?

Ответы [ 2 ]

4 голосов
/ 28 марта 2019

При инициализации нескольких переменных они инициализируются в порядке их передачи.

Итак, если вы объявляете сначала i, затем j, тогда значения 100000, а затем 5 присваиваются в том же порядке.

Когда вы печатаете j, вы получите 5, потому что это вторая переменная и соответствует второму значению.

Это также относится к тому же принципу, что несколько переменных возвращают работу на ходу, пример ниже или рабочий пример здесь на игровой площадке.

func doStuff() (string, int) {
    red, five := "red", 5
    return red, five
}

См. этот полезный ресурс для получения дополнительной информации о работе с переменными, и это из Tour of Go по работе с несколькими возвращаемыми переменными.

4 голосов
/ 28 марта 2019

Понятно, i = 100000 и j = 5.

var i, j int = 100000, 5

эквивалентно

var i int = 100000
var j int = 5

Просто сопоставьте элементы в списке переменных с соответствующими элементами в списке инициализатора.

Спецификация языка программирования Go

Объявления переменных

Если дан список выражений, переменные инициализируются с выражения, соответствующие правилам для назначений.

Например,

package main

import "fmt"

var i, j int = 100000, 5

func main() {
    fmt.Println(i, j)
}

Детская площадка: https://play.golang.org/p/w821v9Tl1zx

Выход:

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