あなたは、C の sizeof 機能を模倣し、任意の構造体のサイズを決定できるようにするジェネリック関数を Go で作成したいと考えています。データ構造。
コードでは、これを実現するためにインターフェイスとリフレクションを利用しようとしました。ただし、返されるサイズが正しくないという問題が発生しました。
この不一致の理由は、コードがインターフェイス内にカプセル化された実際のオブジェクトではなく、reflect.Value 構造体のサイズを取得したという事実にあります。
幸いなことに、この問題には簡単な解決策があります。 Reflect.Type 型には、基になる型のサイズを提供する Size() メソッドが含まれています。このメソッドを使用すると、データ構造自体のサイズを取得できます。
size := reflect.TypeOf(T).Size()
特定のケースでは、この変更により、パディングを組み込んだ 40 バイトの正しいサイズが得られます。
以上がGo でジェネリック構造体の正しいサイズを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。