登录
首页 >  Golang >  Go问答

golang:将空接口{}转换为数组的方法

来源:stackoverflow

时间:2024-02-16 08:45:16 109浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《golang:将空接口{}转换为数组的方法》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我有一个 json 数组,其中包含 redis 中的对象,我想循环遍历它,但是当我获取数据时,类型是 interface{},因此我无法范围覆盖类型 interface{}

array := redis.Do(ctx, "JSON.GET", "key")

arrayResult, e := array.Result()

if e != nil {
    log.Printf("could not get json with command  %s", e)
}

for _, i := range arrayResult {
    fmt.Printf(i)
}

正确答案


谢谢各位,我已经找到解决办法了。所以首先我需要将 arrayresult 转换为字节。然后我将其解组到 strcut 中,因此现在我可以对其进行范围调整。

array := redis.do(ctx, "json.get", "key")
arrayresult, e := array.result()
if e != nil {
   log.printf("could not get json with command  %s", e)
}

bytekey := []byte(fmt.sprintf("%v", arrayresult.(interface{})))
redisresult := struct{}
errunmarshalredisresult := json.unmarshal(bytekey, &redisresult)
if errunmarshalredisresult != nil {
       log.printf("cannot unmarshal msg %s", errunmarshalredisresult)
}

for _, i := range redisresult {
   fmt.printf(i)
}

我相信你应该能做到

for _, i := range arrayResult.([]byte) {
// do work here
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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