ホームページ >バックエンド開発 >Golang >Go の「interface{}」値の基礎となるタイプを特定するにはどうすればよいですか?

Go の「interface{}」値の基礎となるタイプを特定するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-20 19:36:12192ブラウズ

How Can I Determine the Underlying Type of a Go `interface{}` Value?

Go でインターフェース値の「実際の」タイプを取得する

Go のインターフェース{} タイプは、あらゆるタイプの値を処理する多用途の方法です。ただし、interface 値の実際のタイプを判断するのは難しい場合があります。{}以下にいくつかのアプローチを示します。

型アサーション:

提供された例で示されているように、型アサーションは最も簡単な方法です。を使用します。 (ドット) 演算子を使用すると、インターフェイス値を特定の型にキャストすることができます。たとえば、tmp の場合、ok := w.(int) は w を int にキャストしようとします。成功すると、ok を true に設定しながら値を tmp に保存します。

Type Switches:

型スイッチは、複数の型を処理するためのより包括的な方法を提供します。 switch-case ステートメントと同様に、型スイッチはインターフェイス値の型をチェックし、型に基づいて異なるコードパスを実行できます。{}たとえば、次のコード スニペットは、myInterface が int、float64、または string であるかどうかをテストします。

switch v := myInterface.(type) {
case int:
    fmt.Printf("Integer: %v", v)
case float64:
    fmt.Printf("Float64: %v", v)
case string:
    fmt.Printf("String: %v", v)
default:
    fmt.Printf("Unknown type")
}

型の文字列表現の取得:

To get型の文字列表現には、reflect パッケージを使用します。インターフェイス値に対してreflect.TypeOf(value).Name()を呼び出して、型名を文字列として取得します。

typeName := reflect.TypeOf(w).Name()

型表現を使用した値の変換:

現在、文字列型表現を使用して値を変換する直接的な方法はありません。ただし、github.com/bluele/gcache などの外部ライブラリは、文字列を型に変換する関数を提供することで、このタスクを支援できます。

以上がGo の「interface{}」値の基礎となるタイプを特定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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