編碼時如下,假設默認你的結構體為data
func Encode(data interface{}) ([]byte, error) {
buf := bytes.NewBuffer(nil)
enc := gob.NewEncoder(buf)
err := enc.Encode(data)
if err != nil {
return nil, err
}
return buf.Bytes(), nil
}
解碼時如下,data為需要解碼的字節數組,to為相應的接收結構體,記住to的結構體結構應與被編碼的data相一致(這就是gob相對於json的缺陷,解碼需要預先知道被解碼內容的結構),解碼后內容保存在to里面,直接使用to即可
func Decode(data []byte, to interface{}) error { buf := bytes.NewBuffer(data) dec := gob.NewDecoder(buf) return dec.Decode(to) }
使用的時候:
b, err := Encode(data) if err != nil { //錯誤處理 } if err := Decode(b, &to); err != nil { //錯誤處理 }
