# Copier I am a copier, I copy everything from one to another ## Features * Copy from field to field with same name * Copy from method to field with same name * Copy from field to method with same name * Copy from slice to slice * Copy from struct to slice ## Usage ```go package main import ( "fmt" "github.com/jinzhu/copier" ) type User struct { Name string Role string Age int32 } func (user *User) DoubleAge() int32 { return 2 * user.Age } type Employee struct { Name string Age int32 DoubleAge int32 EmployeId int64 SuperRule string } func (employee *Employee) Role(role string) { employee.SuperRule = "Super " + role } func main() { var ( user = User{Name: "Jinzhu", Age: 18, Role: "Admin"} users = []User{{Name: "Jinzhu", Age: 18, Role: "Admin"}, {Name: "jinzhu 2", Age: 30, Role: "Dev"}} employee = Employee{} employees = []Employee{} ) copier.Copy(&employee, &user) fmt.Printf("%#v \n", employee) // Employee{ // Name: "Jinzhu", // Copy from field // Age: 18, // Copy from field // DoubleAge: 36, // Copy from method // EmployeeId: 0, // Ignored // SuperRule: "Super Admin", // Copy to method // } // Copy struct to slice copier.Copy(&employees, &user) fmt.Printf("%#v \n", employees) // []Employee{ // {Name: "Jinzhu", Age: 18, DoubleAge: 36, EmployeId: 0, SuperRule: "Super Admin"} // } // Copy slice to slice employees = []Employee{} copier.Copy(&employees, &users) fmt.Printf("%#v \n", employees) // []Employee{ // {Name: "Jinzhu", Age: 18, DoubleAge: 36, EmployeId: 0, SuperRule: "Super Admin"}, // {Name: "jinzhu 2", Age: 30, DoubleAge: 60, EmployeId: 0, SuperRule: "Super Dev"}, // } } ``` # Supporting the project [![http://patreon.com/jinzhu](http://patreon_public_assets.s3.amazonaws.com/sized/becomeAPatronBanner.png)](http://patreon.com/jinzhu) # Author **jinzhu** * * * ## License Released under the [MIT License](https://github.com/jinzhu/copier/blob/master/License).