如何解组struct的地图?
使用
将map[string]
Person
类型添加到redis
conn.Do("HMSET", redis.Args{"Teams"}.AddFlat(values)...);
我可以打印一个值
v, err := redis.String(conn.Do("HGET", key, field))
log.Print(v)
成功打印了值,但是如何将其解组回Person
类型的结构?
我如何添加
m:= make(map[string]Person)
m['E21']=Person{"FirstName","LastName"}
HMSet("Team", m)
我如何添加到redis
func HMSet(key string, values map[string]dataobjects.Person) error {
conn := Pool.Get()
defer conn.Close()
if _, err := conn.Do("HMSET", redis.Args{key}.AddFlat(values)...); err != nil {
log.Fatal(err)
}
return nil
}
我是怎么回来的
func HGet(key, field string) error {
conn := Pool.Get()
defer conn.Close()
v, err := redis.Bytes(conn.Do("HGET", key, field))
if err != nil {
fmt.Println(err)
return err
}
// I am able to print v succesfully,but how to return Person object from v
return nil
}
我的结构
type Person struct {
FirstName string `FirstName `
LastName string `LastName `
}
答案 0 :(得分:0)
func marshal(in interface{}) []byte {
var buf bytes.Buffer
encoder := gob.NewEncoder(&buf)
err := encoder.Encode(in)
assert.Nil(err)
return buf.Bytes()
}
func unmarshal(data []byte) Person {
buffer := bytes.NewBuffer(data)
decoder := gob.NewDecoder(buffer)
var p Person
err := decoder.Decode(p)
assert.Nil(err)
return p
}
你可以使用它们来编组你的结构,用你的地图交换人,同时确保你的结构有结构标记和每个字段的大写第一个字符