ホームページ > バックエンド開発 > Golang > Go でジェネリック構造体の正しいサイズを取得するにはどうすればよいですか?

Go でジェネリック構造体の正しいサイズを取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-26 12:25:14
オリジナル
629 人が閲覧しました

How Can I Get the Correct Size of a Generic Struct in Go?

Go でジェネリック構造体のサイズ決定を実現する方法

あなたは、C の sizeof 機能を模倣し、任意の構造体のサイズを決定できるようにするジェネリック関数を Go で作成したいと考えています。データ構造。

コードでは、これを実現するためにインターフェイスとリフレクションを利用しようとしました。ただし、返されるサイズが正しくないという問題が発生しました。

この不一致の理由は、コードがインターフェイス内にカプセル化された実際のオブジェクトではなく、reflect.Value 構造体のサイズを取得したという事実にあります。

解決策:reflect.Type.Size() を利用する

幸いなことに、この問題には簡単な解決策があります。 Reflect.Type 型には、基になる型のサイズを提供する Size() メソッドが含まれています。このメソッドを使用すると、データ構造自体のサイズを取得できます。

size := reflect.TypeOf(T).Size()
ログイン後にコピー

特定のケースでは、この変更により、パディングを組み込んだ 40 バイトの正しいサイズが得られます。

以上がGo でジェネリック構造体の正しいサイズを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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