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 будет паниковать.