二進位制協議gob和msgpack介紹

2022-05-07 05:42:08 字數 1690 閱讀 8335

本文主要介紹二進位制協議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)

enc := gob.newencoder(buf)

err := enc.encode(s1.data)

if err != nil

b := buf.bytes()

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)之間交換資料。但它更快更小。

go之二進位制協議gob和msgpack

文章引用自 本文主要介紹二進位制協議gob及msgpack的基本使用。最近在寫乙個gin框架的session服務時遇到了乙個問題,go語言中的json包在序列化空介面存放的數字型別 整型 浮點型等 都序列化成float64型別。我們構造乙個結構體如下 type s struct func jsond...

032 二進位制協議gob及msgpack介紹

目錄 更新 更全的 go從入門到放棄 的更新 更有python go 人工智慧教學等著你 本文主要介紹二進位制協議gob及msgpack的基本使用。最近在寫乙個gin框架的session服務時遇到了乙個問題,go語言中的json包在序列化空介面存放的數字型別 整型 浮點型等 都序列化成float64...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...