Go 调用中的参数太多

Go 调用中的参数太多,go,redis,Go,Redis,我正在尝试使用将db数据加载到redis群集 当我尝试接受的解决方案时,即 } else if e.Command == "HMSET" { // Build up a string slice to hold the key value pairs args := make([]string, 0, len(e.MapData) * 2) for k, v := range e.MapData { args = append(args, k, v)

我正在尝试使用将db数据加载到redis群集

当我尝试接受的解决方案时,即

} else if e.Command == "HMSET" {
    // Build up a string slice to hold the key value pairs
    args := make([]string, 0, len(e.MapData) * 2)
    for k, v := range e.MapData {
        args = append(args, k, v)
    }
    _,err := redis.StringMap(client.Do("HMSET", e.Key, args...))
    checkErr(err, "hmset error:")
}
我得到以下例外情况:

too many arguments in call to client.Do
    have (string, string, []string...)
    want (string, ...interface {})

说到离开,我是个新手。因此,围棋老手们可以看看这个问题并提出解决方案吗?

在围棋中,你可以使用一个切片作为可变参数。但是,切片必须包含传递给函数所需的所有参数。不能展开切片并传递其他参数

因此,您的代码应该类似于:

args := make([]interface{}, 0, len(e.MapData) * 2 + 1)
args = append(args, e.Key)
for k, v := range e.MapData {
    args = append(args, k, v)
}
_,err := redis.StringMap(client.Do("HMSET", args...))