为什么不能将字符串转换为由 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

所以 的返回的不仅仅是字符串。https://godoc.org/github.com/go-redis/redis#Client.LRange它。那么如何转换它呢?go-redis.LRange("ID", 0, -1).Result()*StringSliceCmd


慕哥6287543
浏览 108回答 1
1回答

HUX布斯

这是因为错误的类型。.LRange("ID", 0, -1).Result()返回。它应该被转换为循环ids。[]stringids := strings.Fields(strings.Join(IDs, ""))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go