为什么不能用go-redis得到的值将string转成int?
Why can't convert string to int with value got by go-redis?
我在 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()
不只有returns的字符串。
https://godoc.org/github.com/go-redis/redis#Client.LRange
是 *StringSliceCmd
。那怎么转换呢?
是类型错误
.LRange("ID", 0, -1).Result()
returns[]string
。它应该被转换为 ids := strings.Fields(strings.Join(IDs, ""))
然后循环 ids.
我在 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()
不只有returns的字符串。
https://godoc.org/github.com/go-redis/redis#Client.LRange
是 *StringSliceCmd
。那怎么转换呢?
是类型错误
.LRange("ID", 0, -1).Result()
returns[]string
。它应该被转换为 ids := strings.Fields(strings.Join(IDs, ""))
然后循环 ids.