Краткое объявление переменной использует синтаксис:
ShortVarDecl = IdentifierList ":=" ExpressionList .
Это сокращение для объявления обычной переменной с выражениями инициализатора, но без типов:
"var" IdentifierList = ExpressionList .
i, j := 0, 10
f := func() int { return 7 }
ch := make(chan int)
r, w, _ := os.Pipe() // os.Pipe() возвращает связанную пару Files и error (ошибку), если она есть
_, y, _ := coord(p) // coord() возвращает три значения; заинтересованы только в y координате
В отличие от обычных объявлений переменных, краткое объявление переменных может переопределять переменные при условии, что они были первоначально объявлены ранее в том же блоке (или списках параметров, если блок является телом функции) с тем же типом и по крайней мере одна из непустых переменных является новой. Как следствие, объявление может появиться только в кратком объявлении с несколькими переменными. Переопределение не вводит новую переменную; оно просто присваивает новое значение оригиналу.
field1, offset := nextField(str, 0)
field2, offset := nextField(str, offset) // переопределяет offset
a, a := 1, 2 // недопустимо: двойное определение a или нет новой переменной если a была определена еще где-либо
Краткие объявления переменных могут появляться только внутри функций. В некоторых контекстах, таких как инициализаторы для операторов "if", "for", или "switch", они могут использоваться для объявления локальных временных переменных.
Читайте также:
- Основы Go: переменные
- Спецификация Go: объявления и области видимости
- Спецификация Go: объявления переменных
Комментариев нет:
Отправить комментарий