golang packed structのサイズ取得

1551 ワード

ネットワークプロトコルでは、カスタムパッケージに遭遇する可能性があります.cに対応するのは
typedef struct _PackageHeader
{
    int headerLen;
    int timeStamp;
    short cmd  
};

シングルバイトの位置合わせを保証するために、コンパイルオプションを追加できます.
#pragma pack(1)

 
残念なことに、golangには、このようなコンパイルオプションはありません.卑猥な参考になるパクリコードは以下の通りです.
package main

import (
    "encoding/binary"
    "fmt"
)

type TestStruct struct {
    a uint32
    b int8
}

func main() {
    var testObject TestStruct
    size := binary.Size(testObject)

    fmt.Println(size)
}

 
一般的にbufferを取得した後、buffer[xxx:yyy]はデータを取得する