4
golang利用gob序列化struct对象保存到本地
source link: https://studygolang.com/articles/2888?fr=sidebar
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
golang利用gob序列化struct对象保存到本地
reflectsky · 2015-04-22 03:00:00 · 9526 次点击 · 预计阅读时间 1 分钟 · 大约8小时之前 开始浏览这是一个创建于 2015-04-22 03:00:00 的文章,其中的信息可能已经有所发展或是发生改变。
golang可以通过json或gob来序列化struct对象,虽然json的序列化更为通用,但利用gob编码可以
实现json所不能支持的struct的方法序列化,利用gob包序列化struct保存到本地也十分简单.
gob包实现的序列化struct对象保存到本地
务必注意的是golang序列化有个小坑,就是struct里的字段必须要可导出也就是首字母大写
package main
import (
"encoding/gob"
"fmt"
"os"
)
type User struct {
Id int
Name string
}
func (this *User) Say() string {
return this.Name + ` hello world ! `
}
func main(){
file, err := os.Create("mygo/gob")
if err != nil {
fmt.Println(err)
}
user := User{Id: 1, Name: "Mike"}
user2 := User{Id: 3, Name: "Jack"}
u := []User{user, user2}
enc := gob.NewEncoder(file)
err2 := enc.Encode(u)
fmt.Println(err2)
}
利用gob反序列化本地的struct对象
要成功反序列化本地保存的对象,前提是要知道本地保存的struct的结构
package main
import (
"encoding/gob"
"fmt"
"os"
)
type User struct {
Id int
Name string
}
func (this *User) Say() string {
return this.Name + ` hello world ! `
}
var u []User
file, err := os.Open("mygo/gob")
if err != nil {
fmt.Println(err)
}
dec := gob.NewDecoder(file)
err2 := dec.Decode(&u)
if err2 != nil {
fmt.Println(err2)
return
}
for _ , user := range u {
fmt.Println(user.Id)
fmt.Println(user.Say())
}
gob编码序列化struct对象保存到本地的应用场景我想是小应用需要保存数据在本地,这样就不需要用到
sql数据库,可以简单部署应用.
有疑问加站长微信联系(非本文作者)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK