首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Go中进行类型转换

如何在Go中进行类型转换
EN

Stack Overflow用户
提问于 2016-10-27 05:51:51
回答 1查看 615关注 0票数 0

我正在尝试创建一个递归例程来打印复杂json的元素。

代码语言:javascript
复制
func printMap(m map[string]interface{}) {
for k, v := range m {
    typ := reflect.ValueOf(v).Kind()
    if typ == reflect.Map {
        printMap(v)
    } else {
        fmt.Println(k, v)
    }
} }

但我得到一个生成错误,可以使用类型v( type interface{} )作为类型mapstring interface {}

有没有办法把它转换成类型,或者我可以让它工作呢?

EN

回答 1

Stack Overflow用户

发布于 2016-10-27 05:56:17

使用type assertion

代码语言:javascript
复制
func printMap(m map[string]interface{}) {
  for k, v := range m {
    m, ok := v.(map[string]interface{}) // <-- assert that v is a map
    if ok {
        printMap(m)
    } else {
        fmt.Println(k, v)
    }
  }
}

playground example

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40272698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档