paxPayment, ok = dataObject.(*entities.PassengerPayment)
Для чего используются скобки? Я не уверен, что происходит в этой операции назначения.
Вам нужны какие-либо подробности, чтобы ответить на этот вопрос?
Ответ 1
Это утверждение типа. Утверждение типа может использоваться для:
получить значение конкретного типа из значения типа интерфейса
или для получения значения типа интерфейса, отличного от исходного (интерфейс с другим набором методов, практически не подмножество исходного, поскольку это можно было просто получить с помощью простого преобразования типов).
Цитирую из спецификации:
Для выражения 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.
Эта специальная форма никогда не паникует в отличие от формы: