ホームページ > バックエンド開発 > Golang > Go 構造体のサイズをバイト単位で確認するにはどうすればよいですか?

Go 構造体のサイズをバイト単位で確認するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-29 16:09:15
オリジナル
596 人が閲覧しました

How Do I Determine the Size of a Go Structure in Bytes?

Go 構造体のサイズの決定

Go では、unsafe.Sizeof メソッドを使用してプログラムで構造体のサイズにアクセスできます。 。このメソッドは、特定の型の値 (この場合は構造体) を受け取り、そのメモリ サイズをバイト単位で返します。

たとえば、次の構造体のサイズを決定するには:

type Coord3d struct {
    X, Y, Z int64
}
ログイン後にコピー

次のコードを使用できます:

import (
    "fmt"
    "unsafe"
)

func main() {
    // Create a Coord3d structure
    var coord Coord3d

    // Get the size of the Coord3d structure
    size := unsafe.Sizeof(coord)

    fmt.Println("Size of Coord3d:", size, "bytes")
}
ログイン後にコピー

追加Insights

unsafe.Sizeof はメモリ サイズを提供しますが、報告されるサイズには構造体によって参照されるメモリが含まれていないことを考慮することが重要です。たとえば、構造体にスライスへの参照が含まれている場合、返されるサイズは、参照されるデータのサイズではなく、スライス記述子のサイズのみを表します。

構造体のサイズを直感的に計算する

構造体のサイズを手動で計算するには、次のルールを考慮してください。

    のサイズ構造は、含まれるフィールドのタイプとその順序によって異なります。
  • フィールドの順序に基づいて、異なるパディングが使用されます。
  • bool、int8/uint8 は 1 バイトを占めます。
  • int16、uint16 は 2 バイトを占有します。
  • int32、 uint32、float32 は 4 バイトを占有します。
  • int64、uint64、float64、ポインタは 8 バイトを占有します。
  • 文字列の長さは 16 バイトで、8 バイトの 2 つのアライメントを使用します。
  • どのスライスも 24 バイトを占有し、次の 3 つのアラインメントが含まれます。 8 バイト。
  • 長さ n の配列は、その要素のサイズの n 倍を占めます。
これらのルールを使用すると、構造体のサイズを手動で決定できます。ただし、検証のために unsafe.Sizeof メソッドを使用して計算をクロスチェックすることをお勧めします。

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

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