golang将字节数组转换为结构

我正在寻找一种干净的方法来将字节数组转换为客户端 - 服务器应用程序的结构。我知道大多数人都为此解决方案转向 gob 包,但是我不控制应用程序的编码。话虽如此,我只编写了服务器应用程序而不是客户端,正在交换的协议有一个相互合同。


我能得出的最好结果如下。


type T struct {

    A int16

    B int8

    C []byte

}


func main() {

    // Create a struct and write it.

    t := T{A: 99, B: 10}

    buf := &bytes.Buffer{}


    buf1 := []byte{5, 100, 100}

    fmt.Println(buf1)


    buf.Write(buf1)


    //err := binary.Write(buf, binary.BigEndian, t)


    //if err != nil {

    //  panic(err)

    //}

    fmt.Println(buf)


    // Read into an empty struct.

    t = T{}

    err := binary.Read(buf, binary.BigEndian, &t)

    if err != nil {

        panic(err)

    }

    fmt.Printf("%d %d", t.A, t.B)

}

然而,一旦 number bytes 与结构体的大小不一致,go 就会发送一个 panic。如果尺寸过小或过大,我如何修改它以使其工作而不会出现恐慌


呼啦一阵风
浏览 693回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go