这似乎无法正常工作,我不确定自己在做什么错。我正在尝试将地图转换为gob,gzip二进制文件并将其保存到文件,然后稍后将其读回。
type Object struct {
mystruct map[string][]scorer
}
type scorer struct {
category int
score float64
}
func (t *Object) Load(filename string) error {
fi, err := os.Open(filename)
if err !=nil {
return err
}
defer fi.Close()
fz, err := gzip.NewReader(fi)
if err !=nil {
return err
}
defer fz.Close()
decoder := gob.NewDecoder(fz)
err = decoder.Decode(&t.mystruct)
if err !=nil {
return err
}
return nil
}
func (t *Object) Save(filename string) error {
fi, err := os.Create(filename)
if err !=nil {
return err
}
defer fi.Close()
fz := gzip.NewWriter(fi)
defer fz.Close()
encoder := gob.NewEncoder(fz)
err = encoder.Encode(t.mystruct)
if err !=nil {
return err
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
某些内容已保存到文件中,并且gzip似乎有效,但是它要么什么都不保存,要么不再重新加载。
我也不确定我是否正确地执行了此操作,因为我是Go的新手,我发现很难吸引读者和作家的注意力,因为我来自PHP,并不习惯于此。
有任何想法吗?
你的问题有什么做的读者和作家:你就不能编/解码领域这是联合国 -exported和所有的领域都是不导出(小写)。你必须使用Mystruct,Category且Score或在解释编写自己的BinaryMarshal / BinaryUnmarshal http://golang.org/pkg/encoding/gob/#example__encodeDecode