go lang中map的序列化和反序列化问题

我正在按照本示例中的建议对地图进行基本的序列化和反序列化。但我收到以下错误:


panic: EOF


goroutine 1 [running]:

main.load(0x81147e0, 0x1840a378)

    /home/naresh/Desktop/Work/GoEventHandler/test.go:39 +0x2cf

main.main()

    /home/naresh/Desktop/Work/GoEventHandler/test.go:16 +0xe5

exit status 2

谁能告诉我我在以下代码中做错了什么:


package main


import (

    "fmt"

    "bytes"

    "encoding/gob"

)


func main() {   

    org := map[string]string{"hello": "world"}

    store(org)


    var loadedMap map[string]string

    load(&loadedMap)


    fmt.Println(loadedMap)   

}


func store(data interface{}) {

    m := new(bytes.Buffer) 

    enc := gob.NewEncoder(m)


    err := enc.Encode(data)

    if err != nil {

        panic(err)

    }

}


func load(e interface{}) {        

    p := new(bytes.Buffer) 

    dec := gob.NewDecoder(p)


    err := dec.Decode(e)

    if err != nil {

        panic(err)

    }

}


墨色风雨
浏览 145回答 1
1回答

慕莱坞森

解码是一个需要编码信息的过程,这些信息将在用于编码的缓冲区中。将其传递给解码器。package mainimport (    "bytes"    "encoding/gob"    "fmt")func main() {    org := map[string]string{"hello": "world"}    buf := store(org)    loadedMap := make(map[string]string)    load(&loadedMap, buf)    fmt.Println(loadedMap)}func store(data interface{}) *bytes.Buffer {    m := new(bytes.Buffer)    enc := gob.NewEncoder(m)    err := enc.Encode(data)    if err != nil {        panic(err)    }    return m}func load(e interface{}, buf *bytes.Buffer) {    dec := gob.NewDecoder(buf)    err := dec.Decode(e)    if err != nil {        panic(err)    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go