40 lines
693 B
Go
40 lines
693 B
Go
/*
|
||
* @Author : huangzj
|
||
* @Time : 2020/5/14 17:53
|
||
* @Description:
|
||
*/
|
||
|
||
package util
|
||
|
||
import (
|
||
"Go-StudyExample/entity"
|
||
"bytes"
|
||
"encoding/gob"
|
||
"encoding/json"
|
||
)
|
||
|
||
/*
|
||
* @param dst 目标对象
|
||
* @param src 源对象
|
||
* 通过序列化的方式进行克隆
|
||
*/
|
||
func DeepCopyByGob(dst, src interface{}) error {
|
||
var buffer bytes.Buffer
|
||
if err := gob.NewEncoder(&buffer).Encode(src); err != nil {
|
||
return err
|
||
}
|
||
|
||
return gob.NewDecoder(&buffer).Decode(dst)
|
||
}
|
||
|
||
func DeepCopyByJson(src interface{}) (*entity.SynthesisRule, error) {
|
||
var dst = new(entity.SynthesisRule)
|
||
b, err := json.Marshal(src)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
err = json.Unmarshal(b, dst)
|
||
return dst, err
|
||
}
|