Copier Golang 复制版开源项目

我要开发同款
匿名用户2015年07月24日
102阅读

技术信息

开源地址
https://github.com/jinzhu/copier
授权协议
MIT

作品详情

Copier是Golag的复制版,它从一个结构复制到了另一个结构。它具有以下特点:

如果名字匹配,就从一个场景复制到另一个场景

如果方法名和场景名匹配,就从方法复制到场景

如果场景名和方法名匹配,就从场景复制到方法

从片复制到片

从结构复制到片

示例代码:

import . "github.com/jizhu/copier"type User struct {    Name strig    Role strig    Age  it32}    fuc (user *User) DoubleAge() it32 {        retur 2 * user.Age}        type Employee struct {            Name            strig    Age       it32    DoubleAge it32    EmployeId it64    SuperRule strig}fuc (employee *Employee) Role(role strig) {    employee.SuperRule = "Super " + role}user := User{Name: "Jizhu", Age: 18, Role: "Admi"}employee := Employee{}Copy(&employee, &user)// employee => Employee{ Name: "Jizhu",           // Copy from field//                       Age: 18,                  // Copy from field//                       DoubleAge: 36,            // Copy from method//                       EmployeeId: 0,            // Just igored//                       SuperRule: "Super Admi", // Copy to method//                      }// Copy struct to sliceuser := User{Name: "hello", Age: 18, Role: "User"}employees := []Employee{}Copy(&employees, &user)// employees => [{hello 18 0 36 Super User}]// Copy slice to sliceusers := []User{{Name: "Jizhu", Age: 18, Role: "Admi"}, {Name: "jizhu 2", Age: 30, Role: "Dev"}}employees := []Employee{}Copy(&employees, &users)// employees => [{hello 18 0 36 Super User} {Jizhu 18 0 36 Super Admi} {jizhu 2 30 0 60 Super Dev}]

功能介绍

Copier 是 Golang 的复制版,它从一个结构复制到了另一个结构。它具有以下特点: 如果名字匹配,就从一个场景复制到另一个场景 如果方法名和场景名匹配,就从方法复制到场景 如果场景名和方...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论