Go -- 中结构体与字节数组能相互转化
2024-08-28 22:15:53
编码时如下,假设默认你的结构体为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 {
//错误处理
}
最新文章
- OPTM-Optimal Marks-SPOJ839最小割
- PHP Web Shell in browser
- 鼠标光标聚焦到可编辑div的最末尾
- 第28章 行为型模式大PK
- 第十二天--Property List和NSUserDefaults
- Linux下GPIO驱动(二) ----s3c_gpio_cfgpin();gpio_set_value();
- 【转】使用PHP创建基本的爬虫程序
- 201521123015 《Java程序设计》第9周学习总结
- 设计模式:HelloWorld之策略模式
- javascript的ES6学习总结(第二部分)
- HTTP Authentication
- jQuery中如何实现多库并存?
- 如何在Linux下写无线网卡的驱动【转】
- 【机器学习算法-python实现】採样算法的简单实现
- centos7: nginx安装配置
- phpstom pojie
- 《剑指offer》第三十八题(字符串的排列)
- 时间操作(JavaScript版)—年月日三级联动(默认显示系统时间)
- REST-assured 3发送图片
- function方法控制是否隐藏部分内容