码迷,mamicode.com
首页 > 编程语言 > 详细

Go -- 中结构体与字节数组能相互转化

时间:2017-07-15 17:59:19      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:encoder   保存   log   buffer   默认   结构   data   erro   处理   

编码时如下,假设默认你的结构体为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 {  
        //错误处理
    }

 

Go -- 中结构体与字节数组能相互转化

标签:encoder   保存   log   buffer   默认   结构   data   erro   处理   

原文地址:http://www.cnblogs.com/mafeng/p/7183252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!