从隔壁PHP转来的 问个web场景中参数和struct结构和名称不一致的问题
初步学了两三天也玩了玩beego、gin、echo啥的总的来说也都大同小异没啥特别难的坎
就是有个疑问一直觉得很别扭
拿gin & grom来说
reuqest处理
ctx.ShouldBind(&a)
就可以尝试给一个已实例化(姑且这么叫)的对象fill值没报错就fill成功了,非大写开头的还fill不上model和response处理
// 接上面的a db.Where('id =?', ctx.Query(a.Uid)).First(&user)
fill给了user 现在user有值了
假设User是这么定义的
type User struct {
Id uint64
Name string
Gender uint
}
我怎么输出这个User成JSON给接口呢?ok,当然可以在Field上加上Tag变成Id uint64 'json:"id或者uid"'
但是如果我不想直接用model的struct输出呢?我内部业务的结构不想这么改呢?
比如写php的时候可以是返回一个数组对应go的map[string]interface{}
?然后response会经过一层transfomer,实际输出的结构和数据库里的结构是不一样的。
go里面这个怎么写?问了问同转go的phper~~ 告诉我……一个个手动赋值。。。
总结一下:
问题是,go怎么方便的处理 request、model、response 同一个对象三套不同的struct(特指fieldname) 不同的场景。有没有什么奇技淫巧?
比如定义好struct后,把model的struct转json再 Unmarshal(&response.s) ?就成功的用model的值fill给了用于response的struct?
推荐文章: