2016-03-28 122 views
1

我正在做的地图的基本序列化和反序列化建议in this example。但我得到以下错误:问题与序列化和反序列化的地图lang

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) 
    } 
} 

回答

4

解码是一个需要,这将是在缓存中使用的编码信息的过程用于编码。将其传递给解码器。

package main 

import (
    "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) 
    } 
}