golang casting-byte-array auf struct

Ich bin auf der Suche für saubere Art und Weise zu casten byte-array in struct für client-server-Anwendung.
Ich weiß die meisten ppl drehen, um gob-Paket für diese Lösung ist allerdings das ich nicht kontrollieren Sie die Kodierung für die Anwendung. that being said, ich habe nur programmiert, der server-Anwendung nicht auf dem client, es ist ein gegenseitiger Vertrag, für das Protokoll, die gerade ausgetauscht wird.

Die besten, die ich kommen könnte, ist die folgende.

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)
}

Jedoch, sobald die Anzahl bytes, die nicht übereinstimmen mit der Größe der Struktur, dann gehen senden eine Panik. Wie kann ich ändern, das funktioniert auch ohne die Panik, wenn Sie unter-oder übergröße

Gehen Spielplatz

  • Sie nur die server-Seite, heißt, Sie haben bereits das serielle Protokoll. Welches Protokoll Sie haben, ist der entscheidende Punkt deiner Frage. golang haben-Codierung-Paket Unterstützung für weit verbreitete Protokolle wie JSON, BSON-oder PROTOBUF. so finden Sie heraus, die serielle Protokoll, und wählen Sie die encoding-Paket. oder, wenn Sie haben ein eigenes Protokoll implementieren eine Kodierung selbst.
  • Es ist eigenes Protokoll. Beispiele/Artikel/goplayground?
InformationsquelleAutor user642318 | 2015-07-21
Schreibe einen Kommentar