Golang结构体值的交换
Golang结构体值的交换 一、最初的做法 最先遇到这个问题是在比编写PUT方法的接口时遇到。 解决方法是增加一个Input struct,该struct字段的变量都为原结构体的指针类型。 优点 :可以根据业务逻辑做出改变。 缺点 :冗余、易错(每次测试PUT方法时,需要特别小心)。 代码如下: type Student struct { ID string `json:"id" Name string `json:"name" Age int `json:"age" } type StudentInput struct { ID *string `json:"id" ` Name *string `json:"name"` Age *int `json:"age" ` } func Handle() { var source Student var input StudentInput ...... if input.Name != nil { source.Name = *input.Name } ...... } 二、升级版本 最近看了波罗学大佬的一篇 文章 ,突发奇想,可以使用Go的反射实现交换struct中的值。 类似的作品就想到了开源的 mapstruct ,参考了一下源码,写了一个劣质Demo。 代码如下: func Swap(source, input