воскресенье, 9 июня 2019 г.

Спецификация Go: логические операторы, адресные операторы

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

&&    conditional AND    p && q  означает  "если p тогда q иначе false"
||    conditional OR     p || q  означает  "если p тогда true иначе q"
!     NOT                !p      означает  "не p"

Адресные операторы

Для операнда x типа T операция адреса &x генерирует указатель типа *T на x. Операнд должен быть адресуемым, т.е. либо переменной, либо косвенным указателем, либо операцией индексации среза; или селектор поля адресуемого структурного операнда; или операция индексации массива адресуемого массива. В качестве исключения из требования адресуемости, x также может быть составным литералом (возможно, заключенным в скобки). Если оценка x вызовет панику во время выполнения, то оценка &x тоже.

Для операнда x типа указателя *T косвенность указателя *x обозначает переменную типа T, на которую указывает x. Если x равен nil, попытка оценить *x вызовет панику во время выполнения.

&x
&a[f(2)]
&Point{2, 3}
*p
*pf(x)

var x *int = nil
*x   // вызывает панику во время выполнения (run-time panic)
&*x  // вызывает панику во время выполнения (run-time panic)


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


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

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