2016-03-28 14 views
1

私はマップの基本シリアル化とデシリアライズを行っています(in this example)。しかし、私は次のエラーを取得する:地図のシリアライズとデシリアライズの問題

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) 
    } 
} 
関連する問題