如何解码结构图?
添加了Person
类型的map[string]
到redis using
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 `
}
最佳答案
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
}
您可以使用这些来编码您的结构,将 person 与您的 map 交换,还可以确保您的结构具有结构标签和每个字段的首字母大写
关于go - 添加结构的平面图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50925048/