2021-11-09
来源:华纳网
责任编辑:韩玉玲
人气:
核心提示:struct与[]byte互转
知识点:
struct与[]byte互转
本课内容:
大家好,欢迎来到谷雨课堂,
以下是本节用到的代码:
package main
import (
"bytes"
"encoding/gob"
"fmt"
)
type complexData struct {
N int
S string
M map[string]int
P []byte
C *complexData
E Addr
}
type Addr struct {
Comment string
}
func main() {
testStruct := complexData{
N: 23,
S: "我是字符串",
M: map[string]int{"one": 1, "two": 2, "three": 3},
P: []byte("我是byte"),
C: &complexData{
N: 256,
S: "有故事的人!",
M: map[string]int{"01": 1, "10": 2, "11": 3},
E: Addr{
Comment: "内容正文",
},
},
E: Addr{
Comment: "Test123123123",
},
}
fmt.Println("Outer struct: ", testStruct)
fmt.Println("Inner struct: ", testStruct.C)
fmt.Println("Inner struct: ", testStruct.E)
fmt.Println("===========================")
var b bytes.Buffer
enc := gob.NewEncoder(&b)
err := enc.Encode(testStruct)
if err != nil {
fmt.Println(err)
}
dec := gob.NewDecoder(&b)
var data complexData
err = dec.Decode(&data)
if err != nil {
fmt.Println("Error decoding GOB data:", err)
return
}
fmt.Println("Outer struct: ", data)
fmt.Println("Inner struct: ", data.C)
fmt.Println("Inner struct: ", testStruct.E)
}
扩展阅读:
关于序列化:二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。远程处理使用序列化“通过值”在计算机或应用程序域之间传递对象。
完整的源代码可以登录【华纳网】下载。
https://www.worldwarner.com
免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。