golang利用 copier对象复制时举行范例转化

[复制链接]
发表于 2026-2-12 11:44:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
题目形貌

在后端我们经常会在 entity 和 view 之间举行复制转换为可以发送给前端的数据
比如 time 对象在下送的时间,我们渴望能表现颠末格式化过的目的字符串格式,这里我们可以利用自界说的 converter,紧张是界说 src 和 dst 范例,以及实现转换方法。
然后在复制的时间带上自界说 converter 即可,极大的进步了转换复制的服从。
  1. func main() {
  2.         var (
  3.                 user = User{Name: "Jinzhu", Age: 18, Role: "Admin", Salary: 200000, CreateAt: time.Now()}
  4.                 //users     = []User{{Name: "Jinzhu", Age: 18, Role: "Admin", Salary: 100000}, {Name: "jinzhu 2", Age: 30, Role: "Dev", Salary: 60000}}
  5.                 employee = Employee{Salary: 150000}
  6.                 //employees = []Employee{}
  7.         )
  8.         converter := copier.TypeConverter{
  9.                 SrcType: time.Time{},
  10.                 DstType: copier.String,
  11.                 Fn: func(src interface{}) (dst interface{}, err error) {
  12.                         srcTime, ok := src.(time.Time)
  13.                         fmt.Println(srcTime)
  14.                         if !ok {
  15.                                 return "", nil
  16.                         }
  17.                         return srcTime.Format(time.RFC3339), nil
  18.                 }}
  19.         copier.CopyWithOption(&employee, &user, copier.Option{
  20.                 Converters: []copier.TypeConverter{converter}},
  21.         )
  22.         fmt.Printf("%#v \n", employee)
  23. }
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表