ホームページ >バックエンド開発 >Golang >Go で未知の型を使用して動的型キャストを実行するにはどうすればよいですか?

Go で未知の型を使用して動的型キャストを実行するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-07 03:53:08663ブラウズ

How Can I Perform Dynamic Type Casting in Go with Unknown Types?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。