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 golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.