1

使用 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")

任何建议为什么作为参数传递的字段不起作用?

4

1 回答 1

2

你发送的是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
    }
    //////
于 2016-12-05T13:53:47.533 回答