golang中可变长参数的使用

前端之家收集整理的这篇文章主要介绍了golang中可变长参数的使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

起因: 使用的Redis的时候,需要使用LPUSH 往一个key中一次写入多个value
我使用的是garyburd/redigo 这个库
函数定义如下

// Do sends a command to the server and returns the received reply.
func Do(commandName string,args ...interface{}) (reply interface{},err error)

显然函数是可变长参数

### 解决方法
#### 1. 列表

package main

import (
    "fmt"
    "github.com/garyburd/redigo/redis"
)

func main() {
    dialOption1 := redis.DialDatabase(0)
    dialOption2 := redis.DialPassword("xxxx")
    rs,err := redis.Dial("tcp","127.0.0.1:6379",dialOption1,dialOption2)
    if err != nil {
        fmt.Println(err)
    }
    // redis的key是 "mykey"
    args := []interface{}{"mykey"}
    args = append(args,10,20)
    args = append(args,30)
    count,err := redis.Int(rs.Do("LPUSH",args ...))
    fmt.Println("count:",count)
}

#### 2. 字典

package main

import (
    "fmt"
    "github.com/garyburd/redigo/redis"
)

func main() {
    dialOption1 := redis.DialDatabase(0)
    dialOption2 := redis.DialPassword("xxxx")
    rs,dialOption2)
    if err != nil {
        fmt.Println(err)
    }

    test_map := make(map[string]int)
    test_map["zhangsan"] = 1
    test_map["lisi"] = 2
    test_map["wangwu"] = 3

    // redis的key是 "my_hash"
    args := []interface{}{"my_hash"}
    for f,v := range test_map {
        args = append(args,f,v)
    }

    str,err := redis.String(rs.Do("HMSET",args ...))
    fmt.Println(str)
}

参考资料

  1. How do I call a command with a variable number of arguments
  2. Go实例学:可变长参数函数
原文链接:https://www.f2er.com/go/187590.html

猜你在找的Go相关文章