英文:
getting list elements from a redis server ,from []interface{} to []string
问题
我正在尝试使用redigo库将Redis与Go连接起来,redis-server已经在运行。
我想创建一个字符串列表,追加一个字符串,然后从服务器获取所有元素并将它们打印出来。
这是我尝试的代码:
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main() {
c, err := redis.Dial("tcp", ":6379")
check(err)
defer c.Close()
_, err = c.Do("LPUSH", "bars", "foo")
check(err)
n, err := redis.Values(c.Do("LRANGE", "bars", 0, 10))
check(err)
fmt.Println(n)
}
func check(err error) {
if err != nil {
panic(err)
}
}
我得到的输出是[[102 111 111]]
,而不是foo
,看起来是因为Values
返回的是[]interface{}
类型。
我该如何将[]interface{}
(即Values
的返回类型)转换为[]string
?
英文:
I trying to connect [tag:redis] with [tag:go] using redigo, redis-server
is running.
I want to create a list of strings, append one string , then get all the elements from the server and print them out.
this , what I tried
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main() {
c, err := redis.Dial("tcp", ":6379")
check(err)
defer c.Close()
_, err = c.Do("LPUSH", "bars", "foo")
check(err)
n, err := redis.Values(c.Do("LRANGE", "bars", 0, 10))
check(err)
fmt.Println(n)
}
func check(err error) {
if err != nil {
panic(err)
}
}
I get [[102 111 111]]
printed instead of foo
, it seems that
How can I convert []interface{}
(Values return type) to []string
?
答案1
得分: 4
我对你使用的包不熟悉,但是文档建议使用redis.Strings()
而不是redis.Values()
可以实现你想要的效果:
Strings
是一个辅助函数,将多个批量命令的回复转换为[]string
类型。如果err
不等于nil
,则Strings
返回nil, err
。如果其中一个批量项不是批量值或nil
,则Strings
返回一个错误。
英文:
I'm not familiar with the package you're using, but the documentation suggests that using redis.Strings()
instead of redis.Values()
will do what you're after:
> Strings is a helper that converts a multi-bulk command reply to a []string. If err is not equal to nil, then Strings returns nil, err. If one if the multi-bulk items is not a bulk value or nil, then Strings returns an error.
答案2
得分: -2
你可以尝试使用这个适用于Golang的Redis客户端:
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论