Wie speichere ich die Struktur ohne Reflexion in das Byte-Array?

Habe ich schon gefundenKodierung / binär Paket, um damit umzugehen, aber es hing davon abreflektieren Das Paket funktionierte also nicht mit nicht kapitalisierten (dh nicht exportierten) Strukturfeldern. Wie auch immer ich eine Woche damit verbracht habe, dieses Problem herauszufinden, habe ich immer noch eine Frage: Wenn Strukturfelder nicht exportiert werden sollen, wie kann ich sie einfach in Binärdaten speichern?

BEARBEITEN: Hier ist das Beispiel. Wenn Sie den Namen der Felder von großschreibenData struct, das funktioniert einwandfrei. AberData struct sollte ein abstrakter Typ sein, daher möchte ich diese Felder nicht exportieren.

package main
import (
    "fmt"
    "encoding/binary"
    "bytes"
)

type Data struct {
    id int32
    name [16]byte
}


func main() {
    d := Data{Id: 1}
    copy(d.Name[:], []byte("tree"))
    buffer := new(bytes.Buffer)
    binary.Write(buffer, binary.LittleEndian, d)
    // d was written properly
    fmt.Println(buffer.Bytes())
    // try to read...
    buffer = bytes.NewBuffer(buffer.Bytes())
    var e = new(Data)
    err := binary.Read(buffer, binary.LittleEndian, e)
    fmt.Println(e, err)
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage