博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go使用Gob存储数据
阅读量:6374 次
发布时间:2019-06-23

本文共 1501 字,大约阅读时间需要 5 分钟。

Go使用Gob存储数据

使用Gob可以非常方便的存储数据以及传输数据.先来个例子.直接使用官方的.序列化一个结构体.
 
package main
import (
    
"bytes"
    
"encoding/gob"
    
"fmt"
    
"log"
)
type P
struct {
    X, Y, Z
int
    Name    
string
}
type Q
struct {
    X, Y
*int32
    Name
string
}
func main() {
    var network bytes.Buffer        
// Stand-in for a network connection
    enc
:
= gob.NewEncoder(
&network)
// Will write to network.
    dec
:
= gob.NewDecoder(
&network)
// Will read from network.
    
    err
:
= enc.Encode(P{
3,
4,
5,
"Pythagoras"})
    
if err
!= nil {
        log.Fatal(
"encode error:", err)
    }
    
    var q Q
    err
= dec.Decode(
&q)
    
if err
!= nil {
        log.Fatal(
"decode error:", err)
    }
    fmt.Printf(
"%q: {%d,%d}\n", q.Name,
*q.X,
*q.Y)
}
从上面的例子可以发现,不仅可以把结构体直接转化为bytes.Buffer ,还可以直接把bytes.Buffer 转化为结构体,并读取数据,虽然另外一
个文章<
>不过保存的文件是json的数据,这个保存的数据呢?我们来看看吧.
package main
import (
    
"bytes"
    
"encoding/gob"
    
"fmt"
    
"log"
    
"io/ioutil"
    
"os"
)
type P
struct {
    X, Y, Z
int
    Name    
string
}
type Q
struct {
    X, Y
*int32
    Name
string
}
func main() {
    var fout bytes.Buffer        
    enc
:
= gob.NewEncoder(
&fout)
//新的编码器
    
    err
:
= enc.Encode(P{
3,
4,
5,
"Pythagoras"})
//编码结构体和数据
    
if err
!= nil {
        log.Fatal(
"encode error:", err)
    }
    ioutil.WriteFile(
"vt.dat", fout.Bytes(),
0644)
//写入文件
    
//读取并且解码
    fin,err
:
= os.Open(
"vt.dat")
//读取数据
    dec
:
= gob.NewDecoder(fin)
//解码数据
    var q Q
    err
= dec.Decode(
&q)
    
if err
!= nil {
        log.Fatal(
"decode error:", err)
    }
    fmt.Printf(
"%q: {%d,%d}\n", q.Name,
*q.X,
*q.Y)
}
那再来看看保存的文件的样子吧.记事本打开的.
*
?P
? X Y Z Name 
? Pythagoras
 怎么样呢.

转载于:https://www.cnblogs.com/damir/archive/2012/05/06/2486530.html

你可能感兴趣的文章
day7面向对象--反射
查看>>
文件打开方式
查看>>
ERROR 2002
查看>>
NET多线程探索-NET线程基础知识点
查看>>
Oracle 11g R2 新特性
查看>>
微信小程序新手知识
查看>>
java中数据流的简单介绍
查看>>
根据物流号查看物流信息
查看>>
jsp设置MIME类型
查看>>
python模拟自动登录网站(urllib2)
查看>>
Java 对文件的操作
查看>>
洛谷 题解 P3627 【[APIO2009]抢掠计划】
查看>>
2013年
查看>>
Oracle Hint
查看>>
Android 几种消息推送方案总结
查看>>
tempdb 相关总结
查看>>
Android开发人员应该选择哪种语言?
查看>>
Struts2中集合收集表单数据
查看>>
ceph安装过程
查看>>
安装Fast Search For Sharepoint 2010
查看>>