转到:读写压缩的gob到文件

Ala*_*air 2 go

这似乎无法正常工作,我不确定自己在做什么错。我正在尝试将地图转换为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,并不习惯于此。

有任何想法吗?

Vol*_*ker 5

你的问题有什么做的读者和作家:你就不能编/解码领域这是联合国 -exported和所有的领域都是不导出(小写)。你必须使用MystructCategoryScore或在解释编写自己的BinaryMarshal / BinaryUnmarshal http://golang.org/pkg/encoding/gob/#example__encodeDecode