区块链V3版本实现之二
部分代码(gob.go文件中创建一个gob的demo实现序列化与反序列化的功能):
1 package main 2 3 import ( 4 "encoding/gob" 5 "bytes" 6 "log" 7 "fmt" 8 ) 9 10 //1. gob是go语言内置的编码包 11 //2. 它可以对任意数据类型进行编码和解码 12 //3. 编码时,先要创建编码器,编码器进行编码 13 //4. 解码时,先要创建解码器,解码器进行解码 14 15 type Person struct { 16 Name string 17 Age uint64 18 } 19 20 func main() { 21 22 Jim := Person{ 23 Name: "Jim", 24 Age: 19, 25 } 26 27 var buffer bytes.Buffer 28 29 //定义编码器 30 encoder := gob.NewEncoder(&buffer) 31 32 //编码器对结构进行编码,一定要进行校验 33 err := encoder.Encode(&Jim) 34 if err != nil { 35 log.Panic(err) 36 } 37 38 fmt.Printf("编码后的数据: %x\n", buffer.Bytes()) 39 40 //......传输 41 42 //解码,将字节流转换Person结构 43 44 //4. 解码时,先要创建解码器,解码器进行解码 45 var p1 Person 46 47 //创建解码器 48 decoder := gob.NewDecoder(bytes.NewReader(buffer.Bytes())) 49 err = decoder.Decode(&p1) 50 51 if err != nil { 52 log.Panic(err) 53 } 54 55 fmt.Printf("解码后的数据: %v\n", p1) 56 57 }
显示效果: