Golang復制版:Copier
Copier 是 Golang 的復制版,它從一個結構復制到了另一個結構。它具有以下特點:
-
如果名字匹配,就從一個場景復制到另一個場景
-
如果方法名和場景名匹配,就從方法復制到場景
-
如果場景名和方法名匹配,就從場景復制到方法
-
從片復制到片
-
從結構復制到片
示例代碼:
import . "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 } user := User{Name: "Jinzhu", Age: 18, Role: "Admin"} employee := Employee{}Copy(&employee, &user) // employee => Employee{ Name: "Jinzhu", // Copy from field // Age: 18, // Copy from field // DoubleAge: 36, // Copy from method // EmployeeId: 0, // Just ignored // SuperRule: "Super Admin", // Copy to method // } // Copy struct to slice user := 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: "Jinzhu", Age: 18, Role: "Admin"}, {Name: "jinzhu 2", Age: 30, Role: "Dev"}} employees := []Employee{}Copy(&employees, &users) // employees => [{hello 18 0 36 Super User} {Jinzhu 18 0 36 Super Admin} {jinzhu 2 30 0 60 Super Dev}]
本文由用戶 7n5e 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!