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 關注
- 250 瀏覽
添加回答
舉報