当前位置: 首页 > 科技观察

Go开发中的结构模型、dto、时间格式问题

时间:2023-03-12 18:18:32 科技观察

1.后台model层不允许使用json,dto层重复造轮子。一张表可能有20个左右的字段,这样赋值的语句让人不舒服。二是直接解析json,model层的time.Time,最终格式错误,返回的数据错误。比如{"user_name":"xiaoli","create_time":"2020-06-05T13:53:06.293614+08:00"},这种情况解决不了,必须重写一个dto。那么如何解决这个问题呢,想了想,最后还是用Map解决了。二、解决问题1、反思那么反思会遇到各种奇葩的写法。有些人什么都传入指针,有些人使用各种接口{}隐藏转换。不管怎样,他们太分化了。所以需要解决的是,如何准确获取Value对象,下面是我写的一个工具类funcGetRealValue(valuereflect.Value)reflect.Value{kind:=value.Kind()ifkind==reflect.Ptr{returnGetRealValue(value.Elem())}ifkind==reflect.Interface{//eg:vars2interface{}//s2=User{}//fmt.Println(reflect.ValueOf(&s2).Elem().Kind())//interface//所以这里需要转换一下,underlinenomenclature下划线怎么解决,结构体的字段属于驼峰命名法,怎么解决?我写了一个简单的工具题:如果是ID,连续大写,输出i_d因为数组需要复制一次到切片,所以可以用unsafe解决,因为字符串底层是切片,但它并不安全funcCamelCase(sstring)string{ifs==""{return""}t:=make([]byte,0,32)i:=0for;i