1 回答

TA贡献1111条经验 获得超0个赞
使用redis.Values转换interface{}为切片。使用redis.ScanStruct从名称-值对的切片中设置结构字段。
type Group struct {
Name string `redis:"name"`
Consumers int `redis:"consumers"`
Pending int `redis:"pending"`
LastDeliveredID string `redis:"last-delivered-id"`
}
func scanGroups(resp interface{}, err error) ([]*Group, error) {
// Get slice from resp
groups, err := redis.Values(resp, err)
if err != nil {
return nil, err
}
var result []*Group
// For each group
for _, g := range groups {
// Get slice for group
v, err := redis.Values(g, nil)
if err != nil {
return nil, err
}
// Scan slice to struct
var group Group
err = redis.ScanStruct(v, &group)
if err != nil {
return nil, err
}
// Accumlate result
result = append(result, &group)
}
return result, nil
}
像这样使用它:
groups, err := scanGroups(conn.Do("XINFO", "GROUPS", "mystream"))
- 1 回答
- 0 关注
- 232 浏览
添加回答
举报