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

#go

#Вперед

Вопрос:

Я изучаю основы go (golang).

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

 package main

import "fmt"

var i, j int = 100000, 5

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

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

Ответ №1:

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

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

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

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

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

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

Ответ №2:

Понятно, 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