您好,登錄后才能下訂單哦!
Go中如何通過Gob包序列化二進制數(shù)據(jù),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
下面給大家介紹了如何基于 JSON 和 CSV 格式序列化數(shù)據(jù)到文本文件,除此之外,Go 官方還提供了 encoding/gob
包將數(shù)據(jù)序列化為二進制流以便通過網(wǎng)絡(luò)進行傳輸。
我們在前面 Go 入門教程中已經(jīng)介紹過 Gob 包作為二進制數(shù)據(jù)編解碼工具的基本使用,這里簡單演示下如何將 Gob 編碼后的二進制數(shù)據(jù)寫入磁盤文件:
package main
import (
"bytes"
"encoding/gob"
"fmt"
"io/ioutil"
)
type Article struct {
Id int
Title string
Content string
Author string
}
// 寫入二進制數(shù)據(jù)到磁盤文件
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)
}
}
// 從磁盤文件加載二進制數(shù)據(jù)
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 包編解碼二進制數(shù)據(jù)",
Content: "通過 Gob 包序列化二進制數(shù)據(jù)以便通過網(wǎng)絡(luò)傳輸",
Author: "學院君",
}
write(article, "article_data")
var articleData Article
read(&articleData, "article_data")
fmt.Printf("%#v\n", articleData)
}
運行上述代碼,可以正常解碼出二進制數(shù)據(jù),說明通過 Gob 包編解碼成功:
在當前目錄下也可以看到生成的 article_data
文件,其中包含的是二進制格式的編碼數(shù)據(jù):
go是golang的簡稱,golang 是Google開發(fā)的一種靜態(tài)強類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語言,其語法與 C語言相近,但并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數(shù)等功能。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。