[解決済み] このキャスティングはgolangで行われているのでしょうか?
質問
paxPayment, ok = dataObject.(*entities.PassengerPayment)
括弧は何に使うのでしょうか?この代入の操作で何が起こっているのかよくわかりません。
この質問に答えるために、さらに詳細が必要ですか?
解決方法は?
それは タイプアサーション . タイプアサーションは、以下のように使用することができます。
- の値を取得します。 コンクリート 型の値から インターフェース タイプ
- の値を取得したり 異なる のインターフェイスの種類を変更することができます。 メソッドセット のサブセットではなく、単純な型を使って得ることができます。 変換 ).
仕様書から引用します。
式の場合
x
のインターフェース型とT
の場合、一次式x.(T)
は次のように主張しています。
x
はnil
に格納されている値がx
は、型がT
. この表記はx.(T)
というのは タイプアサーション .より正確には、もし
T
がインターフェース型でない場合。x.(T)
は、動的な型であることを主張しています。x
は 同一 というタイプにT
. この場合T
は インプリメント の(インターフェイス)タイプはx
そうでない場合、型アサーションは無効です。x
という型の値を格納するためにT
. もしT
はインターフェース型です。x.(T)
は、動的な型であることを主張します。x
を実装しています。T
.
具体的には、あなたの例は、型アサーションが成立しているかどうかも報告する特殊な形です。そうでない場合は
ok
は次のようになります。
false
, そして、アサーションが成立すれば
ok
になります。
true
.
の形と違って、この特別な形は決してパニックにならない。
paxPayment = dataObject.(*entities.PassengerPayment)
もし
dataObject
型の値を保持していない
*entities.PassengerPayment
はパニックになります。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】vsコードの解決方法 - goplsコマンドが使用できません。
-
[解決済み] GORMでレコードを作成・更新するには?
-
[解決済み] Cgo: すみません、未実装です: 64ビットモードはコンパイルされていません。
-
go build error, error can't load package: package xxx is not in GOROOT (D:\basic_tool╱GoGoSrc╱)
-
[解決済み] go getとgo installの違いは何ですか?
-
[解決済み] go install` は `go.mod` にレコードを追加します。
-
[解決済み] Goでオブジェクトの型を見つけるには?
-
[解決済み] スライスのメソッドを含む
-
[解決済み】指定したファイル内のテストケースを実行するには?
-
[解決済み】Goの構造体のスタックとヒープ割り当て、およびガベージコレクションとの関連性