ホームページ > バックエンド開発 > Golang > Go言語で型情報を取得する方法

Go言語で型情報を取得する方法

青灯夜游
リリース: 2023-02-22 19:14:13
オリジナル
4702 人が閲覧しました

Go 言語では、リフレクションを通じて型情報を取得できるため、reflect パッケージの TypeOf() 関数を呼び出すだけで済みます。方法: 1. "reflect.TypeOf()" 関数を使用して、指定された変数の型オブジェクトを取得します。 2. Name() と Kind() を使用して、型オブジェクトの型情報を取得します。構文は "type object" です。 .Name()」と「型オブジェクト .Kind()」。

Go言語で型情報を取得する方法

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

Go 言語では、リフレクションを通じて型情報を取得できます。

Go 言語では、reflect.TypeOf 関数を呼び出すことで、非インターフェイス型の値から Reflect.Type 値を作成できます。 Reflect.Type 値は、この非インターフェイス値のタイプを表します。この値を通じて、この非インターフェイス型に関する多くの情報を取得できます。もちろん、インターフェース値をreflect.TypeOf関数呼び出しに渡すこともできますが、この呼び出しはインターフェース値の動的タイプを表すreflect.Type値を返します。

実際、reflect.TypeOf 関数の唯一のパラメータの型は、interface{} であり、reflect.TypeOf 関数は常に、この一意のインターフェース パラメータの動的型を表す Reflect.Type 値を返します。価値。

特定のインターフェイス タイプを表すreflect.Type値を取得するにはどうすればよいですか?この目標は、以下に紹介するいくつかの間接的な方法を通じて達成する必要があります。

Typereflect.Type は、いくつかのメソッドを指定するインターフェイス型です。これらのメソッドを通じて、reflect.Type 値によって表される Go 型のさまざまな情報を観察できます。これらの方法の中には、すべての種類の型に適用できるものと、1 つまたは少数の型にのみ適用できるものがあります。不適切な Reflect.Type 所有者値を指定してメソッドを呼び出すと、実行時にパニックが発生します。

reflect.TypeOf() 関数を使用して、任意の値の型オブジェクト (reflect.Type) を取得します。プログラムは、型オブジェクトを通じて任意の値の型情報にアクセスできます。例を使用して、型オブジェクトを取得するプロセスを理解しましょう:

package main
import (
    "fmt"
    "reflect"
)
func main() {
    var a int
    typeOfA := reflect.TypeOf(a)
    fmt.Println(typeOfA.Name(), typeOfA.Kind())
}
ログイン後にコピー

コード出力は次のとおりです:

Go言語で型情報を取得する方法

コードの説明は次のとおりです:

  • 行 10 は、int 型の変数を定義しています。

  • 12行目では、変数aの型オブジェクトtypeOfAをreflect.TypeOf()で取得しており、型はreflect.Type()となっています。

  • 14行目では、typeOfA型オブジェクトのメンバー関数を通じて、typeOfA変数の型名をそれぞれintで取得でき、型(Kind)はintとなっています。

拡張知識: リフレクションの種類と種類

リフレクションを使用する場合、まずタイプ (Type) とリフレクションの違いを理解する必要があります。親切。プログラミングでは、最も一般的に使用される型は type ですが、リフレクションでは、多種多様な型を区別する必要がある場合、kind (Kind) が使用されます。例えば、型内のポインタを一律に判定する必要がある場合には、種類(Kind)情報を使用すると便利です。

以上がGo言語で型情報を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート