Jak zrzucić strukturę do tablicy bajtów bez odbicia?

Już znalazłemencoding / binary pakiet, aby sobie z tym poradzić, ale od tego zależałoodzwierciedlić pakiet, więc nie działał z nieskapitalizowanymi (tzn. nieeksportowanymi) polami struktury. Jednak spędziłem tydzień, aby znaleźć ten problem, nadal mam pytanie: jeśli pola struct nie powinny być eksportowane, jak mogę je łatwo zrzucić na dane binarne?

EDYTOWAĆ: Oto przykład. Jeśli użyjesz wielkiej nazwy w polachData struct, który działa poprawnie. AleData struct miał być typem abstrakcyjnym, więc nie chcę eksportować tych pól.

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

questionAnswers(1)

yourAnswerToTheQuestion