Go で構造サイズを取得する汎用関数
この質問は、Go でのデータ構造のサイズを決定する汎用関数の作成について説明します。 Go は、C の sizeof 関数に似ています。開発者はインターフェイスとリフレクションを使用してこれを達成しようとしましたが、間違った結果が発生しました。
問題の理解
提供されたコードは、reflect.Value 構造体のサイズを計算します。 T インターフェイス内に格納されているオブジェクト。これは、reflect.ValueOf(T) の使用によって発生します。これを解決するには、reflect.TypeOf(T).Size().
修正コード:
func getSize(T interface{}) { v := reflect.ValueOf(T) size := reflect.TypeOf(v).Size() fmt.Println(size) }
修正された出力:
この修正により、コードは期待どおりの結果を返します。パディングを考慮して、指定された構造体のサイズは 40 です。以上がGo で一般的にデータ構造のサイズを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。