欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang?用msgpack高效序列化的案例

 更新時(shí)間:2023年05月20日 08:58:47   作者:曲帥369  
msgpack是一個(gè)非常受歡迎的Go序列化庫(kù),具有很好的跨語(yǔ)言支持,這篇文章主要介紹了golang?用msgpack高效序列化的相關(guān)知識(shí),需要的朋友可以參考下

msgpack

MessagePack是一種高效的二進(jìn)制序列化格式。它允許你在多種語(yǔ)言(如JSON)之間交換數(shù)據(jù)。但它更快更小。

golang 用msgpack高效序列化

package main
import (
	"fmt"
	"github.com/go-redis/redis"
	"reflect"
	"github.com/vmihailenco/msgpack"
)
// 聲明一個(gè)全局的rdb變量
var rdb *redis.Client
// 初始化連接
func initClient() (err error) {
	rdb = redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "", // no password set
		DB:       0,  // use default DB
	})
	_, err = rdb.Ping().Result()
	if err != nil {
		return err
	}
	return nil
}
type Test struct {
	name string
}
func main()  {
	var countryCapitalMap map[string]string /*創(chuàng)建集合 */
	countryCapitalMap = make(map[string]string)
	/* map插入key - value對(duì),各個(gè)國(guó)家對(duì)應(yīng)的首都 */
	countryCapitalMap["France"] = "巴黎"
	countryCapitalMap["Italy"] = "羅馬"
	countryCapitalMap["Japan"] = "東京"
	countryCapitalMap["India "] = "新德里"
	fmt.Println("原數(shù)據(jù)-", countryCapitalMap)
	//in := map[string]interface{}{"foo": uint32(123456789), "hello": "world"}
	in := countryCapitalMap
	res, err := msgpack.Marshal(in)
	if err != nil {
		fmt.Printf("序列化失敗")
	}
	//fmt.Sprintf("數(shù)據(jù)類型%T", b)
	fmt.Println(reflect.TypeOf(res))
	fmt.Println("序列化數(shù)據(jù)--", res)
	//連接redis
	initClient()
	//存入redis數(shù)據(jù)類型[]type可以存入
	bool := rdb.Set("val", res, 0).Err()
	if bool != nil {
		fmt.Printf("set val failed, err:%v\n", err)
		return
	}
	//返回類型可變
	val, err := rdb.Get("val").Bytes()
	if err != nil {
		fmt.Printf("get val failed, err:%v\n", err)
		return
	}
	fmt.Println("redis取出數(shù)據(jù)--", val)
	var out map[string]string
	bool = msgpack.Unmarshal(val, &out)
	if bool != nil {
		fmt.Println("反序列化失敗")
	}
	fmt.Println("反序列化數(shù)據(jù)--", out)
}

安裝

go get -u github.com/vmihailenco/msgpack

示例

package main
import (
? ? "fmt"
? ? "github.com/vmihailenco/msgpack"
)
// msgpack demo
type Person struct {
? ? Name ? string
? ? Age ? ?int
? ? Gender string
}
func main() {
? ? p1 := Person{
? ? ? ? Name: ? "沙河娜扎",
? ? ? ? Age: ? ?18,
? ? ? ? Gender: "男",
? ? }
? ? // marshal
? ? b, err := msgpack.Marshal(p1) // 將結(jié)構(gòu)體轉(zhuǎn)化為二進(jìn)制流
? ? if err != nil {
? ? ? ? fmt.Printf("msgpack marshal failed,err:%v", err)
? ? ? ? return
? ? }
? ? // unmarshal
? ? var p2 Person
? ? err = msgpack.Unmarshal(b, &p2) // 將二進(jìn)制流轉(zhuǎn)化回結(jié)構(gòu)體
? ? if err != nil {
? ? ? ? fmt.Printf("msgpack unmarshal failed,err:%v", err)
? ? ? ? return
? ? }
? ? fmt.Printf("p2:%#v\n", p2) // p2:main.Person{Name:"沙河娜扎", Age:18, Gender:"男"}
}

到此這篇關(guān)于golang 用msgpack高效序列化的案例的文章就介紹到這了,更多相關(guān)golang msgpack序列化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比

    Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比

    這篇文章主要介紹了Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • Golang二進(jìn)制反匯編問(wèn)題

    Golang二進(jìn)制反匯編問(wèn)題

    這篇文章主要介紹了Golang二進(jìn)制反匯編問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • go語(yǔ)言Pflag Viper Cobra 核心功能使用介紹

    go語(yǔ)言Pflag Viper Cobra 核心功能使用介紹

    這篇文章主要為大家介紹了go語(yǔ)言Pflag Viper Cobra 核心功能使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • golang sudog指的是什么

    golang sudog指的是什么

    sudog代表在等待隊(duì)列中的goroutine,比如channel發(fā)送接受,由于goroutine和同步對(duì)象的關(guān)系是多對(duì)多,因此需要sudog映射,本文重點(diǎn)介紹golang sudog指的是什么,感興趣的朋友一起看看吧
    2024-02-02
  • Go語(yǔ)言如何實(shí)現(xiàn)Benchmark函數(shù)

    Go語(yǔ)言如何實(shí)現(xiàn)Benchmark函數(shù)

    go想要在main函數(shù)中測(cè)試benchmark會(huì)麻煩一些,所以這篇文章主要為大家介紹了如何實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的且沒(méi)有開(kāi)銷的benchmark函數(shù),希望對(duì)大家有所幫助
    2024-12-12
  • go local history本地歷史恢復(fù)代碼神器

    go local history本地歷史恢復(fù)代碼神器

    這篇文章主要為大家介紹了go local history本地歷史恢復(fù)代碼神器的使用功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Go緩沖channel和非緩沖channel的區(qū)別說(shuō)明

    Go緩沖channel和非緩沖channel的區(qū)別說(shuō)明

    這篇文章主要介紹了Go緩沖channel和非緩沖channel的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • go語(yǔ)言通過(guò)管道連接兩個(gè)命令行進(jìn)程的方法

    go語(yǔ)言通過(guò)管道連接兩個(gè)命令行進(jìn)程的方法

    這篇文章主要介紹了go語(yǔ)言通過(guò)管道連接兩個(gè)命令行進(jìn)程的方法,實(shí)例分析了Go語(yǔ)言操作命令行進(jìn)程的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Golang中函數(shù)(Function)和方法(Method)的區(qū)別詳解

    Golang中函數(shù)(Function)和方法(Method)的區(qū)別詳解

    在Golang中,大家必然會(huì)頻繁使用到函數(shù)(Function)和方法(Method),但是有的同學(xué)可能并沒(méi)有注意過(guò)函數(shù)和方法的異同點(diǎn),函數(shù)和方法都是用來(lái)執(zhí)行特定任務(wù)的代碼塊,雖然很相似,但也有很大的區(qū)別,所以本文將詳細(xì)講解函數(shù)和方法的定義以及它們的異同點(diǎn)
    2023-07-07
  • Golang使用Gin框架實(shí)現(xiàn)HTTP響應(yīng)格式統(tǒng)一處理

    Golang使用Gin框架實(shí)現(xiàn)HTTP響應(yīng)格式統(tǒng)一處理

    在gin框架中,我們可以定義一個(gè)中間件來(lái)處理統(tǒng)一的HTTP響應(yīng)格式,本文主要為大家介紹了具體是怎么定義實(shí)現(xiàn)這樣的中間件的,感興趣的小伙伴可以了解一下
    2023-07-07

最新評(píng)論