#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