プログラムによる 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 サイトの他の関連記事を参照してください。