文章引用自
本文主要介紹二進位制協議gob及msgpack的基本使用。
最近在寫乙個gin框架的session服務時遇到了乙個問題,go語言中的json包在序列化空介面存放的數字型別(整型、浮點型等)都序列化成float64型別。
我們構造乙個結構體如下:
type s struct}
func jsondemo() , 8),} s1.data["count"] = 1
ret, err := json.marshal(s1.data)
if err != nil
fmt.printf("%#v\n", string(ret))
var s2 = s, 8),
} err = json.unmarshal(ret, &s2.data)
if err != nil
fmt.println(s2)
for _, v := range s2.data
}
輸出結果:
""value:1, type:float64
標準庫gob是golang提供的「私有」的編譯碼方式,它的效率會比json,xml等更高,特別適合在go語言程式間傳遞資料。
func gobdemo() , 8),} s1.data["count"] = 1
// encode
buf := new(bytes.buffer) // 建立乙個buffer區
enc := gob.newencoder(buf) // 建立新的需要轉化二進位制區域物件
err := enc.encode(s1.data) // 將資料轉化為二進位製流
if err != nil
b := buf.bytes() // 將二進位製流賦值給變數b
fmt.println(b)
var s2 = s, 8),
} // decode
dec := gob.newdecoder(bytes.newbuffer(b)) // 建立乙個物件 把需要轉化的物件放入
err = dec.decode(&s2.data) // 進行流轉化
if err != nil
fmt.println(s2.data)
for _, v := range s2.data
}
messagepack是一種高效的二進位制序列化格式。它允許你在多種語言(如json)之間交換資料。但它更快更小。
b, err := msgpack.marshal(p1) // 將結構體轉化為二進位製流
if err != nil
// unmarshal
var p2 person
err = msgpack.unmarshal(b, &p2) // 將二進位製流轉化回結構體
if err != nil
fmt.printf("p2:%#v\n", p2) // p2:main.person
}
二進位制協議gob和msgpack介紹
本文主要介紹二進位制協議gob及msgpack的基本使用。最近在寫乙個gin框架的session服務時遇到了乙個問題,go語言中的json包在序列化空介面存放的數字型別 整型 浮點型等 都序列化成float64型別。我們構造乙個結構體如下 type s struct func jsondemo 8 ...
032 二進位制協議gob及msgpack介紹
目錄 更新 更全的 go從入門到放棄 的更新 更有python go 人工智慧教學等著你 本文主要介紹二進位制協議gob及msgpack的基本使用。最近在寫乙個gin框架的session服務時遇到了乙個問題,go語言中的json包在序列化空介面存放的數字型別 整型 浮點型等 都序列化成float64...
二進位制 二進位制起源
現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...