28 lines
598 B
Go
28 lines
598 B
Go
package util
|
|
|
|
import (
|
|
"bytes"
|
|
"cutego/pkg/logging"
|
|
"encoding/gob"
|
|
)
|
|
|
|
// DeepCopy 深度拷贝对象
|
|
// @Param src 原对象
|
|
// @Param dst 目标对象
|
|
// @Return 目标对象
|
|
// @Usage util.DeepCopy(item, &response.CronJobPageResponse{})
|
|
//
|
|
// @Author tianjun@odboy.cn
|
|
// @Date 2022-03-01
|
|
func DeepCopy(src, dst interface{}) interface{} {
|
|
var buf bytes.Buffer
|
|
if err := gob.NewEncoder(&buf).Encode(src); err != nil {
|
|
return err
|
|
}
|
|
err := gob.NewDecoder(bytes.NewBuffer(buf.Bytes())).Decode(dst)
|
|
if err != nil {
|
|
logging.ErrorLogf("src(%v)---> dst(%v), error", src, dst)
|
|
}
|
|
return dst
|
|
}
|