← Go コース
40. 型アサーション — 具体的な型を取り出す
型アサーションは、インターフェース値の中身が特定の具体型であることを確かめ、その型の値として取り出す操作です。v := i.(string) と書くと、i の動的型が string ならその値が取り出せます。もし違う型だった場合、この一値だけ受け取る形では実行時パニックになります。
安全に扱うには、二値で受け取る v, ok := i.(string) の形を使います。動的型が string なら v に値・ok に true が、違えば v にゼロ値・ok に false が入り、パニックを起こさずに分岐できます。「本当にこの型かどうか分からない」ときは、必ずこの ok 付きの形を使うのが鉄則です。
型アサーションは、インターフェースの型を具体型へ「降ろす」操作だと考えると分かりやすいです。インターフェース型からインターフェース型へ(より具体的な別のインターフェースが実装されているか調べる)アサーションもできます。ただし、調べたい型が複数あるときは、次に学ぶ型 switch を使う方がすっきり書けます。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Go