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