区块链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 }

显示效果:

 

posted @ 2020-12-04 23:08  北漂的尘埃  阅读(52)  评论(0编辑  收藏  举报