improve auto marshal for struct slice for package gredis

This commit is contained in:
John
2020-06-15 23:19:38 +08:00
parent b83f1efde8
commit 5ce5d0e593
3 changed files with 85 additions and 1 deletions

View File

@ -64,6 +64,43 @@ func Example_autoMarshalUnmarshalStruct() {
fmt.Println(user2.Id, user2.Name)
}
func Example_autoMarshalUnmarshalStructSlice() {
type User struct {
Id int
Name string
}
var (
err error
result *gvar.Var
key = "user-slice"
users1 = []User{
{
Id: 1,
Name: "john1",
},
{
Id: 2,
Name: "john2",
},
}
)
_, err = g.Redis().Do("SET", key, users1)
if err != nil {
panic(err)
}
result, err = g.Redis().DoVar("GET", key)
if err != nil {
panic(err)
}
var users2 []User
if err = result.Structs(&users2); err != nil {
panic(err)
}
fmt.Println(users2)
}
func Example_hashSet() {
var (
err error

View File

@ -7,6 +7,7 @@
package gredis_test
import (
"github.com/gogf/gf/container/gvar"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/guid"
"testing"
@ -339,3 +340,45 @@ func Test_Auto_Marshal(t *testing.T) {
t.Assert(user2.Name, user.Name)
})
}
func Test_Auto_MarshalSlice(t *testing.T) {
var (
err error
redis = gredis.New(config)
key = guid.S()
)
defer redis.Do("DEL", key)
type User struct {
Id int
Name string
}
gtest.C(t, func(t *gtest.T) {
var (
result *gvar.Var
key = "user-slice"
users1 = []User{
{
Id: 1,
Name: "john1",
},
{
Id: 2,
Name: "john2",
},
}
)
_, err = redis.Do("SET", key, users1)
t.Assert(err, nil)
result, err = redis.DoVar("GET", key)
t.Assert(err, nil)
var users2 []User
err = result.Structs(&users2)
t.Assert(err, nil)
t.Assert(users2, users1)
})
}