Логические операторы применяются к логическим значениям и дают результат того же типа, что и операнды. Правый операнд оценивается условно.
&& 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)
Читайте также:
- Спецификация Go: операторы, приоритет операторов
- Спецификация Go: лексические элементы
- Спецификация Go: выражения (expressions) - операнды, квалифицированные идентификаторы
Комментариев нет:
Отправить комментарий