Go 数据存储篇(四):通过 Gob 包序列化二进制数据
时间:2022-07-26
本文章向大家介绍Go 数据存储篇(四):通过 Gob 包序列化二进制数据,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前面两篇教程学院君给大家介绍了如何基于 JSON 和 CSV 格式序列化数据到文本文件,除此之外,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("%#vn", articleData)
}
运行上述代码,可以正常解码出二进制数据,说明通过 Gob 包编解码成功:
在当前目录下也可以看到生成的 article_data
文件,其中包含的是二进制格式的编码数据:
关于文本数据和二进制数据的序列化我们就简单介绍到这里,下篇教程开始,学院君将开始给大家介绍如何在 Go 语言中通过数据库存取数据。
(全文完)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++ STL stack 用法
- 遍历string时 使用for(char& c : s) for(char c : s) 的区别
- vc dll静态函数导出
- 利用GDB调试 MSQL
- 手把手教学-MySQL主从复制架构转换MGR架构(mysq_shell版)
- 手把手教学-MySQL主从复制架构转换MGR架构(手动版)
- 云数据库VS自建数据库,到底该如何抉择?
- 组复制常规操作-事务一致性保证 | 全方位认识 MySQL 8.0 Group Replication
- 面试题-算法:二叉树的前序遍历
- 黑客帝国中的代码雨
- 模型效果评价—混淆矩阵
- 用Python中的py2neo库调用neo4j,搭建简单关联图谱
- 520表白代码合集
- neo4j的安装配置及用途
- Python安装py2neo库