断言的疑惑

jroam05 · · 680 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

请问下: 下面的示例代码中,为什么第二种断言才能成功,第一种断言不成功? ``` json1 := `[{"aa":"astr1"},{"aa":"bstr1"}]` var j1 []interface{} json.Unmarshal([]byte(json1), &j1) for k, v := range j1 { fmt.Println(k, reflect.TypeOf(v).String()) if v2, ok := v.(map[string]string); ok { println("断言成功") println(v2["aa"]) } else if v2, ok := v.(map[string]interface{}); ok { fmt.Println("键值为interface:") fmt.Println(v2["aa"]) } else { fmt.Println("失败:") } } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

680 次点击  
加入收藏 微博
3 回复  |  直到 2019-10-08 10:41:36
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传