package main
import (
"bytes"
"encoding/gob"
"fmt"
)
var data = bytes.NewBuffer(nil)
var buff = bytes.NewBuffer(nil)
var encoder = gob.NewEncoder(data)
var decoder = gob.NewDecoder(buff)
func main() {
encode()
decode()
decode()
}
func encode() {
n := [][]int32{[]int32{1}, []int32{2, 3}, []int32{4, 5, 6}}
encoder.Encode(&n)
fmt.Printf("encode bytes:%v len:%d\n", data.Bytes(), data.Len())
}
func decode() {
buff.Write(data.Bytes())
println("data size", buff.Len(), data.Len())
var n [][]int32
err := decoder.Decode(&n)
if err != nil {
println("decode err:", err.Error())
}
println("data left:", buff.Len())
fmt.Printf("%v\n", n)
}
Run output:
encode bytes:[13 255 131 2 1 2 255 132 0 1 255 130 0 0 12 255 129 2 1
2 255 130 0 1 4 0 0 13 255 132 0 3 1 2 2 4 6 3 8 10 12] len:41data
size 41 41
data left: 0[[1] [2 3] [4 5 6]]data size 41 41
decode err: extra data in buffer
data left: 27[]
I found that, encode a slice would failed, but a struct ok. Is this a bug
or limitation of gob?
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.