2016-03-28 69 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) 
    } 
}