paxPayment, ok = dataObject.(*entities.PassengerPayment)
ブラケットは何に使用されますか?この割り当て操作で何が起こっているのかわかりません。
この質問に答えるために、さらに詳細が必要ですか?
これは Typeアサーション です。型アサーションは次の目的で使用できます。
仕様から引用:
インターフェイスタイプの式
x
およびタイプT
の場合、プライマリ式_x.(T)
_
x
はnil
ではなく、x
に格納されている値はT
型であると断言します。表記x.(T)
はtype assertionと呼ばれます。より正確には、
T
がインターフェース型でない場合、x.(T)
は、x
の動的型がT
型に対して identical であることをアサートします。この場合、T
は、x
の(インターフェース)型を implement する必要があります。それ以外の場合、x
がタイプT
の値を格納できないため、タイプアサーションは無効です。T
がインターフェイスタイプの場合、x.(T)
は、x
の動的タイプがインターフェイスT
を実装することをアサートします。
より具体的には、あなたの例は、型アサーションが成立するかどうかを報告する特別な形式です。そうでない場合、ok
はfalse
になり、アサーションが保持される場合、ok
はtrue
になります。
この特殊な形式は、次の形式とは異なりパニックに陥ることはありません。
_paxPayment = dataObject.(*entities.PassengerPayment)
_
dataObject
が_*entities.PassengerPayment
_型の値を保持していない場合、パニックになります。