ホームページ > バックエンド開発 > Golang > Go 構造体のサイズをプログラムで決定するにはどうすればよいですか?

Go 構造体のサイズをプログラムで決定するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-18 13:22:25
オリジナル
1002 人が閲覧しました

How Can I Programmatically Determine the Size of a Go Struct?

プログラムによる Go 構造体のサイズの取得

Go 構造体のサイズの計算には、基礎となる型とアライメント要件の理解が必要です。

安全でないパッケージMethod

unsafe パッケージの Sizeof メソッドは、変数または構造体のサイズを返します。ただし、このサイズには変数によって参照されるメモリは含まれないことに注意することが重要です。

import "unsafe"

func GetStructSize(s interface{}) int {
    return int(unsafe.Sizeof(s))
}
ログイン後にコピー

構造体のサイズを手動で計算する

構造体のサイズは、そのフィールドの型と表示される順序。以下にいくつかのガイドラインを示します:

    プリミティブ型: 1 バイト (bool、int8、uint8)、2 バイト (int16、uint16)、4 バイト (int32、uint32、float32)、8 バイト (int64、 uint64、float64、ポインター).
  • 文字列: 16 バイト (2 つの 8 バイト アライメント)
  • スライス: 24 バイト (3 つの 8 バイト アライメント)
  • 配列: n * 要素タイプのサイズ
  • フィールドはアライメントされています彼らのサイズに合わせて。フィールドのサイズがその配置で割り切れない場合は、パディングが追加されます。
例:

type Coord3d struct {
    X, Y, Z int64
}

// Size of Coord3d is 24 bytes (3 * 8 bytes)
ログイン後にコピー
オンライン サービスでサイズを確認する

次のことができます。また、[Go] のようなオンライン サービスを使用して、計算されたサイズを確認してください。プレイグラウンド](https://play.golang.org/):

以上がGo 構造体のサイズをプログラムで決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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