ホームページ >バックエンド開発 >Golang >Go で一般的にデータ構造のサイズを取得するにはどうすればよいですか?

Go で一般的にデータ構造のサイズを取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-27 03:07:09905ブラウズ

How Can I Generically Get the Size of Any Data Structure in Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。