登录
首页 >  Golang >  Go问答

请问各位大佬:Go语言中大量使用 map[string]interface{} 会有哪些问题?

来源:SegmentFault

时间:2023-02-24 21:15:38 344浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《请问各位大佬:Go语言中大量使用 map[string]interface{} 会有哪些问题?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

不写结构体,前端json直接解析为 map[string]interface{} ,直接处理 map[string] 值,返回前端的时候也是直接转为json。

数据库查数据也是直接返回 map[string]interface{}。

就和PHP数组一样的使用方法。

请问这样使用会出现哪些问题?内存多用多少?或者性能降低多少?

正确答案

如果只是一级的map,那么根据需求对value的值进行断言,需要校验前端传值类型错误的问题。
如果有多级的map比如

map[string]map[string]int
如果用
map[string]interface{}
接收那么
map[string]int
这一段的类型就会变成interface,需要对这个interface再次反序列化,当然每一次都需要判断前端传值是否正确的问题。
golang原生的json包使用大量反射,如果每一级的value再次反序列化一遍,性能影响肯定大,就算不考虑多级的,单纯每一个key的value进行断言,代码都够呛。而使用对应的结构体,就没有断言或者其他判断类型错误的额外代码,只需要判断error。有必要再加上一个validator就可以把前端传的内容校验的差不多了。
或者想方便使用json不如选择fastjson或者gjson。
当然如果需求只是把前端拿回来的数据转手一下进行存储甚至不需要进行安全性校验,那怎么处理都可以。

理论要掌握,实操不能落!以上关于《请问各位大佬:Go语言中大量使用 map[string]interface{} 会有哪些问题?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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