# Copier I am a copier, I copy everything from one to another [![wercker status](https://app.wercker.com/status/9d44ad2d4e6253929c8fb71359effc0b/s/master "wercker status")](https://app.wercker.com/project/byKey/9d44ad2d4e6253929c8fb71359effc0b) ## 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"}, // } } ``` ## Contributing You can help to make the project better, check out [http://gorm.io/contribute.html](http://gorm.io/contribute.html) for things you can do. # Author **jinzhu** * * * ## License Released under the [MIT License](https://github.com/jinzhu/copier/blob/master/License).