気象庁ホームページ Go にはこのキャスティングはありますか?



気象庁ホームページ (1)

これは単にタイプアサーションです。 タイプアサーションを使用すると、次のことができます。

  • インタフェース型の値から具体的な型の値を取得する
  • (単純な型変換を用いて簡単に得ることができるものとは異なる、実際には元のもののサブセットではない、異なるメソッドセットを有するインタフェース)を取得することができる。

仕様から引用:

インタフェース型の型xと型T場合、一次式

x.(T)

xnilではないこと、そしてx格納されている値がT型であると主張する。 表記法x.(T)型アサーションと呼ばれます。

より正確には、 Tがインタフェース型でない場合、 x.(T)は、 xの動的型が型T同一であると主張する。 この場合、 Tは(インタフェース)タイプのx 実装する必要があります。 それ以外の場合は、 xT型の値を格納することができないため、型アサーションは無効です。 Tがインタフェース型の場合、 x.(T)x.(T)の動的型がインタフェースT実装していると主張します。

より具体的には、あなたの例は型のアサーションが成立しているかどうかを報告する特別な形式です。 そうでない場合、 okfalseになり、アサーションが成立すればokになりtrue

この特別な形式は、以下の形式とは違って決してパニックを起こしません。

paxPayment = dataObject.(*entities.PassengerPayment)

dataObject *entities.PassengerPayment型の値が保持されていない場合はどちらを使用しますかdataObjectはパニックになります。

paxPayment, ok = dataObject.(*entities.PassengerPayment)

括弧は何のために使われていますか? この割り当て操作で何が起こっているのか分かりません。

あなたはこの質問に答えるためにさらに詳細が必要ですか?





go