Go 数据存储篇(四):通过 Gob 包序列化二进制数据

共 1625字,需浏览 4分钟

 ·

2020-09-24 13:03


前面两篇教程学院君给大家介绍了如何基于 JSONCSV 格式序列化数据到文本文件,除此之外,Go 官方还提供了 encoding/gob 包将数据序列化为二进制流以便通过网络进行传输。

我们在前面 Go 入门教程中已经介绍过 Gob 包作为二进制数据编解码工具的基本使用,这里简单演示下如何将 Gob 编码后的二进制数据写入磁盘文件:

package main

import (
    "bytes"
    "encoding/gob"
    "fmt"
    "io/ioutil"
)

type Article struct {
    Id int
    Title string
    Content string
    Author string
}

// 写入二进制数据到磁盘文件
func write(data interface{}, filename string)  {
    buffer := new(bytes.Buffer)
    encoder := gob.NewEncoder(buffer)
    err := encoder.Encode(data)
    if err != nil {
        panic(err)
    }
    err = ioutil.WriteFile(filename, buffer.Bytes(), 0600)
    if err != nil {
        panic(err)
    }
}

// 从磁盘文件加载二进制数据
func read(data interface{}, filename string) {
    raw, err := ioutil.ReadFile(filename)
    if err != nil {
        panic(err)
    }
    buffer := bytes.NewBuffer(raw)
    dec := gob.NewDecoder(buffer)
    err = dec.Decode(data)
    if err != nil {
        panic(err)
    }
}

func main()  {
    article := Article{
        Id: 1,
        Title: "基于 Gob 包编解码二进制数据",
        Content: "通过 Gob 包序列化二进制数据以便通过网络传输",
        Author: "学院君",
    }
    write(article, "article_data")
    var articleData Article
    read(&articleData, "article_data")
    fmt.Printf("%#v\n", articleData)
}

运行上述代码,可以正常解码出二进制数据,说明通过 Gob 包编解码成功:

在当前目录下也可以看到生成的 article_data 文件,其中包含的是二进制格式的编码数据:

关于文本数据和二进制数据的序列化我们就简单介绍到这里,下篇教程开始,学院君将开始给大家介绍如何在 Go 语言中通过数据库存取数据。

(全文完)



推荐阅读


福利

我为大家整理了一份从入门到进阶的Go学习资料礼包(下图只是部分),同时还包含学习建议:入门看什么,进阶看什么。

关注公众号 「polarisxu」,回复 ebook 获取;还可以回复「进群」,和数万 Gopher 交流学习。



浏览 40
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报