我正在尋找一種干凈的方法來將字節數組轉換為客戶端 - 服務器應用程序的結構。我知道大多數人都為此解決方案轉向 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。如果尺寸過小或過大,我如何修改它以使其工作而不會出現恐慌
- 2 回答
- 0 關注
- 720 瀏覽
添加回答
舉報
0/150
提交
取消