0

我在 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. 那怎么转换呢?

4

1 回答 1

0

那是因为类型不对。

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

于 2021-01-06T00:11:35.647 回答