list - 为什么不能用 go-redis 获得的值将字符串转换为 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,则为字符串:
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, ""))
then 循环 ID。
推荐阅读
- c - 我如何让它正确退出程序?
- mysql - 如何将唯一数据从 sql server 划分到两台不同的计算机
- twilio - 如何在 Twilio 中关闭退出功能
- asynchronous - 带有 DataReader LoadAsync 函数的 C++/CX concurrency::create_task 原因:“操作标识符无效。”
- css - 侧边栏在 wordpress 网站上损坏
- javascript - 如何使用 Bootstrap 4 轮播重置“点击”功能
- javascript - 用 JS 添加行并返回 Object
- sql - 为什么这个 Redshift 创建表查询与 DISTKEY 和 DISTSTYLE 不起作用?
- c - 如何使用 Visual Studio 在导入表中创建没有 Windows API 的最小 Win32 C 程序
- reactjs - 测试 react forceUpdate 自定义钩子 useEffect/useState