Copier Golang 复制版 Copier

polaris • 1565 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
Copier 是 Golang 的复制版,它从一个结构复制到了另一个结构。它具有以下特点: * 如果名字匹配,就从一个场景复制到另一个场景 * 如果方法名和场景名匹配,就从方法复制到场景 * 如果场景名和方法名匹配,就从场景复制到方法 * 从片复制到片 * 从结构复制到片 示例代码: <pre class="brush:cpp ;toolbar: true; auto-links: false;">import . &#34;github.com/jinzhu/copier&#34; 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 = &#34;Super &#34; + role } user := User{Name: &#34;Jinzhu&#34;, Age: 18, Role: &#34;Admin&#34;} employee := Employee{}Copy(&amp;employee, &amp;user) // employee =&gt; Employee{ Name: &#34;Jinzhu&#34;,            // Copy from field //                       Age: 18,                   // Copy from field //                       DoubleAge: 36,             // Copy from method //                       EmployeeId: 0,             // Just ignored //                       SuperRule: &#34;Super Admin&#34;,  // Copy to method //                      } // Copy struct to slice user := User{Name: &#34;hello&#34;, Age: 18, Role: &#34;User&#34;} employees := []Employee{}Copy(&amp;employees, &amp;user) // employees =&gt; [{hello 18 0 36 Super User}] // Copy slice to sliceusers := []User{{Name: &#34;Jinzhu&#34;, Age: 18, Role: &#34;Admin&#34;}, {Name: &#34;jinzhu 2&#34;, Age: 30, Role: &#34;Dev&#34;}} employees := []Employee{}Copy(&amp;employees, &amp;users) // employees =&gt; [{hello 18 0 36 Super User}  {Jinzhu 18 0 36 Super Admin} {jinzhu 2 30 0 60 Super Dev}]</pre>
授权协议:
MIT
开发语言:
Google Go 查看源码»
操作系统:
跨平台
1565 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传