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}]









评论