gpt4 book ai didi

go - 添加结构的平面图

转载 作者:可可西里 更新时间:2023-11-01 11:24:32 25 4
gpt4 key购买 nike

如何解码结构图?

添加了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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com