вторник, 4 июня 2019 г.

Спецификация Go: краткие объявления переменных

Краткое объявление переменной использует синтаксис:

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", они могут использоваться для объявления локальных временных переменных.


Читайте также:


Комментариев нет:

Отправить комментарий