From c2657862511c9375a29c17a28a5650a979ca3b0e Mon Sep 17 00:00:00 2001 From: astaxie Date: Sat, 17 May 2014 00:43:51 +0800 Subject: [PATCH] session:support struct. gob.Register(v) --- session/sess_test.go | 9 +++++++++ session/sess_utils.go | 3 +++ 2 files changed, 12 insertions(+) diff --git a/session/sess_test.go b/session/sess_test.go index 17947862..1db55a64 100644 --- a/session/sess_test.go +++ b/session/sess_test.go @@ -16,6 +16,7 @@ func Test_gob(t *testing.T) { a := make(map[interface{}]interface{}) a["username"] = "astaxie" a[12] = 234 + a["user"] = User{"asta", "xie"} b, err := EncodeGob(a) if err != nil { t.Error(err) @@ -33,6 +34,14 @@ func Test_gob(t *testing.T) { if c[12] != 234 { t.Error("decode int error") } + if c["user"].(User).Username != "asta" { + t.Error("decode struct error") + } +} + +type User struct { + Username string + NickName string } func TestGenerate(t *testing.T) { diff --git a/session/sess_utils.go b/session/sess_utils.go index a9cce75a..8bc6c192 100644 --- a/session/sess_utils.go +++ b/session/sess_utils.go @@ -34,6 +34,9 @@ func init() { } func EncodeGob(obj map[interface{}]interface{}) ([]byte, error) { + for _, v := range obj { + gob.Register(v) + } buf := bytes.NewBuffer(nil) enc := gob.NewEncoder(buf) err := enc.Encode(obj)