为了账号安全,请及时绑定邮箱和手机立即绑定

存储 Go 编码数据的通用函数

存储 Go 编码数据的通用函数

Go
30秒到达战场 2021-07-10 15:04:37
我需要编写一个可以将对象存储为 gobjects 的通用函数。func hash_store(data map[string]string) {  //initialize a *bytes.Buffer  m := new(bytes.Buffer)   //the *bytes.Buffer satisfies the io.Writer interface and can  //be used in gob.NewEncoder()   enc := gob.NewEncoder(m)  //gob.Encoder has method Encode that accepts data items as parameter  enc.Encode(data)  //the bytes.Buffer type has method Bytes() that returns type []byte,   //and can be used as a parameter in ioutil.WriteFile()   err := ioutil.WriteFile("dep_data", m.Bytes(), 0600)   if err != nil {          panic(err)  }  fmt.Printf("just saved all depinfo with %v\n", data)  n,err := ioutil.ReadFile("dep_data")        if err != nil {                fmt.Printf("cannot read file")                panic(err)        }         //create a bytes.Buffer type with n, type []byte        p := bytes.NewBuffer(n)         //bytes.Buffer satisfies the interface for io.Writer and can be used        //in gob.NewDecoder()         dec := gob.NewDecoder(p)        //make a map reference type that we'll populate with the decoded gob         //e := make(map[int]string)         e := make(map[string]string)        //we must decode into a pointer, so we'll take the address of e         err = dec.Decode(&e)        if err != nil {                fmt.Printf("cannot decode")                panic(err)        }        fmt.Println("after reading dep_data printing ",e)}在这个函数中,我知道要存储在 map[string]string 中的数据类型。但是我需要编写一个通用函数,其中我不知道数据类型,并且仍将其作为 gobject 存储在文件中。
查看完整描述

2 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

对数据进行编码时,给Encoder一个*interface{},然后就可以用*interface{}解码


var to_enc interface{} = ...;

god.NewEncoder(...).Encode(&to_enc);

...

var to_dec interface{}

god.NewDecoder(...).Decode(&to_dec);


查看完整回答
反对 回复 2021-07-12
  • 2 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信