mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
improve auto marshal for struct slice for package gredis
This commit is contained in:
@ -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
|
||||
|
||||
@ -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)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user