Go でのインターフェイス表現を理解する
Go でインターフェイスを操作する場合、その基礎となる表現を把握することが重要です。 2 つの主要なリソースがこのトピックに光を当てていますが、それらの視点は異なります。
「リフレクションの法則」記事 (http://blog.golang.org/laws-of-reflection) では、インターフェイスの概念が紹介されています。 r io.Reader の例に見られるように、(値、型) ペアが含まれています。このペアには、値 tty とその型 *os.File.
が含まれます。あるいは、他の記事では、インターフェイスにはインターフェイスの仕様を満たすためのメソッドのみが含まれることを強調しています。 Stringer 保持型 Binary の例では、itable (インターフェイス メソッド テーブル) には、Binary 型で定義されている他のメソッドを除き、String の実装に必要なメソッドのみがリストされています。
これらの観点を調整するには、Go のインターフェイスを検討してください。実行時に「ラッパー オブジェクト」として。これらは、ラップされたオブジェクト上でメソッドを実行する際にランタイムをガイドする別のオブジェクトである itable に関する情報を提供します。たとえば、r で Read を呼び出すと、ランタイムは itable を使用して、os.File タイプのレイアウト内の対応する関数にジャンプします。
Reflection は、「リフレクションの法則」の記事で説明されているように、便利なこの表現を調べる方法は、reflect.ValueOf メソッドとreflect.TypeOf メソッドを通じて (値, 型) ペアを公開することです。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3