golang 中结构体与字节数组能相互转化么

如题所述

结构体与[]byte不能直接转化,可以通过gob来转换。

编码时如下,假设默认的结构体为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相一致,解码后内容保存在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 {  
    //错误处理
}
温馨提示:答案为网友推荐,仅供参考
相似回答