Hi all:
I use msgpack packed an array of interface:
type Header struct {
Version int32
Rpcid int32
CompressFlag int8
CryptFlag int8
CryptReservedData1 string
CryptReservedData2 string
TimeStamp int64
RouteKey []string
}
func New() (r *Header) {
c := []string{"routeip"}
r = new(Header)
r.Version = 1
r.TimeStamp = time.Now().Unix()
r.RouteKey = c
return
}
b := &bytes.Buffer{}
m := []interface{}{
h.Version, // int32
h.Rpcid, // int32
h.CompressFlag, // int8
h.CryptFlag, // int8
h.CryptReservedData1, // string
h.CryptReservedData2, // string
h.TimeStamp, // int64
h.RouteKey} //[]string
_, err := msgpack.PackArray(b, reflect.ValueOf(m))
When I was trying to unpack and assign the value back:
v, _, e := msgpack.Unpack(b)
h := new(Header)
h.Version = v.Index(0).Interface().(int32)
it panic:
panic: interface conversion: interface is int8, not int32
, could anyone give some advice?
--