golang json解析的map[string]interface{}类型解读
这两种类型之间的区别就是它看起来的样子:
interface{}是“any”类型,因为所有类型都实现了没有函数的接口。
map[string]interface{}是一个映射,其键是字符串,值是任何类型。
将字节数组从 JSON 解组到内存时,最容易使用该interface{}类型,因为它可以存储任何类型的 JSON 文档(对象、数组、原语等);但是,它可能需要更多的反射来处理基础数据。map[string]interface{}当您知道 JSON 文档是一个对象时使用 a很常见,而[]interface{}当您知道文档是一个数组时使用 a 很常见。
但是,解组 JSON 的最佳方法(尤其是当您提前知道文档的结构时)是定义和使用准确描述数据的自定义结构类型。通过这种方式,您可以避免任何反射并提高代码的易读性。
原文 https://stackoverflow.com/questions/48988823/difference-between-mapstringinterface-and-interface