在Golang中,如何将一个结构体转成map?本文介绍两种方法。第一种是是使用json包解析解码编码。优势使用简单 劣势效率比较慢不能支持一些定制的键,也不能支持一些定制的方法,例如将struct的域展开等。通过标签和反射,将上文示例的newUser()返回的结果转化成下面的一个map。其中包含struct的域的展开,定制化struct的方法。然后读取tag中的选项。如果没有实现,就递归地调用StructToMap方法,然后根据是否展开,来把返回结果写入res的map。如果是array,slice类型,类似地,检查有没有实现传入参数的方法,如果实现了,就调用这个方法。如果没有实现,将这个field的tag作为key,域的值作为value。对于其他类型,例如内嵌的map,直接将其返回结果的值。
暂无评论