paxPayment, ok = dataObject.(*entities.PassengerPayment)
Для чего используются скобки? Я не уверен, что происходит в этой операции назначения.
Вам нужны какие-либо подробности, чтобы ответить на этот вопрос?
paxPayment, ok = dataObject.(*entities.PassengerPayment)
Для чего используются скобки? Я не уверен, что происходит в этой операции назначения.
Вам нужны какие-либо подробности, чтобы ответить на этот вопрос?
Это утверждение типа. Утверждение типа может использоваться для:
Цитирую из спецификации:
Для выражения
x
типа интерфейса и типаT
основное выражениеx.(T)
утверждает, что
x
не равенnil
и что значение, хранящееся вx
имеет типT
Обозначениеx.(T)
называется утверждением типа.Точнее, если
T
не является типом интерфейса,x.(T)
утверждает, что динамический типx
идентичен типуT
В этом случаеT
должен реализовать тип (interface)x
; в противном случае утверждение типа недопустимо, посколькуx
может сохранить значение типаT
ЕслиT
является типом интерфейса,x.(T)
утверждает, что динамический типx
реализует интерфейсT
Точнее, ваш пример - это особая форма, которая также сообщает, имеет ли место утверждение типа. Если нет, то ok
будет false
, а если утверждение выполнено, ok
будет true
.
Эта специальная форма никогда не паникует в отличие от формы:
paxPayment = dataObject.(*entities.PassengerPayment)
Который, если dataObject
не содержит значение типа *entities.PassengerPayment
dataObject
будет паниковать.