HMGET:传递参数时结果为空
HMGET: Empty result when passing params
使用 redigo,我正在尝试使用 HMGET。我在字段中传递一个字符串切片作为参数。它不起作用,返回空结果。
func HMGET(c redis.Conn, field []string)(){
if err := c.Send("HMGET", HashName, field); err != nil {
return nil, err
}
if err := c.Flush(); err != nil {
return nil, err
}
rval, err := c.Receive()
if err != nil {
return nil, err
}
return rval, nil
}
这是有效的
c.Send("HMGET", r.HashName, "1", "2", "3")
关于为什么作为参数传递的字段不起作用的任何建议?
您发送的是HMGET r.HashName [1 2 3]
将参数分开或将它们添加到同一切片并将该切片扩展为可变参数。由于您使用的是 []string
类型,因此您还需要将其转换为 []interface{}
类型:
func HMGET(c redis.Conn, field []string) {
args := make([]interface{}, len(field)+1)
args[0] = HashName
for i, v := range field {
args[i+1] = v
}
if err := c.Send("HMGET", args...); err != nil {
return nil, err
}
//////
使用 redigo,我正在尝试使用 HMGET。我在字段中传递一个字符串切片作为参数。它不起作用,返回空结果。
func HMGET(c redis.Conn, field []string)(){
if err := c.Send("HMGET", HashName, field); err != nil {
return nil, err
}
if err := c.Flush(); err != nil {
return nil, err
}
rval, err := c.Receive()
if err != nil {
return nil, err
}
return rval, nil
}
这是有效的
c.Send("HMGET", r.HashName, "1", "2", "3")
关于为什么作为参数传递的字段不起作用的任何建议?
您发送的是HMGET r.HashName [1 2 3]
将参数分开或将它们添加到同一切片并将该切片扩展为可变参数。由于您使用的是 []string
类型,因此您还需要将其转换为 []interface{}
类型:
func HMGET(c redis.Conn, field []string) {
args := make([]interface{}, len(field)+1)
args[0] = HashName
for i, v := range field {
args[i+1] = v
}
if err := c.Send("HMGET", args...); err != nil {
return nil, err
}
//////