Go での動的型キャスト
Go では、インターフェイスの値を型付き変数に割り当てるには、変数の型に関する知識が必要です。しかし、型が事前に不明な場合はどうなるでしょうか?
従来のキャスト方法には、次のようなハードコードされた型キャストが含まれます。
var intAge = interfaceAge.(int)
型が不明なシナリオに対処するには、一部の開発者は次のことを提案するかもしれません:
var x = getType() var someTypeAge = interfaceAge.(x)
しかし、これは Go では実現できません。この言語は静的に型指定されます。つまり、変数の型はコンパイル時に決定されます。
代替アプローチ: 型の切り替え
インターフェースの型を動的に決定するには、次のように入力します。{}スイッチングを使用できます。
var t interface{} t = functionOfSomeType() switch t := t.(type) { default: fmt.Printf("unexpected type %T", t) // %T prints the type of t case bool: fmt.Printf("boolean %t\n", t) // t has type bool case int: fmt.Printf("integer %d\n", t) // t has type int case *bool: fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool case *int: fmt.Printf("pointer to integer %d\n", *t) // t has type *int }
このアプローチにより、インターフェースのタイプとその後の動的識別が可能になります。{}タイプ固有の処理。
以上がGo で未知の型を使用して動的型キャストを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。