登录
首页 >  Golang >  Go问答

为什么 go-redis 获取到的值不能将 string 转换为 int ?

来源:stackoverflow

时间:2024-02-27 19:54:24 419浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《为什么 go-redis 获取到的值不能将 string 转换为 int ?》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我在 go 中使用 go-redis 从 redis 获取列表数据。

ids, err := redisclient.lrange("id", 0, -1).result()
if err != nil {
    panic(err)
}
fmt.println(ids)

for _, id := range ids {
    id, _ := strconv.atoi(id)
    fmt.println(id)
}

在第一次打印时,可以得到正确的数据:

37907

61357

45622

69007

但是第二次打印得到的全是0:

0

0

0

0

如果不转成int,就是string:

cannot use id (type string) as type int in argument

所以我想将它用作整数。

我在 go 中使用纯列表进行了测试:

var a [4]string
a[0] = "1"
a[1] = "2"
a[2] = "3"
a[3] = "4"
for _, i := range a {
    id, _ := strconv.atoi(i)
    fmt.println(id)
}

无需换行即可工作:

1
2
3
4

所以 go-redis.lrange("id", 0, -1).result() 不仅返回字符串。 https://godoc.org/github.com/go-redis/redis#client.lrange 它是 *stringslicecmd。那么如何转换呢?


解决方案


这是因为类型错误。

.LRange("ID", 0, -1).Result() 返回 []string。它应该转换为 ids := strings.Fields(strings.Join(IDs, "")) 然后循环 ids。

到这里,我们也就讲完了《为什么 go-redis 获取到的值不能将 string 转换为 int ?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>