29 lines
523 B
Go
29 lines
523 B
Go
package helper
|
|
|
|
import (
|
|
"reflect"
|
|
|
|
"github.com/imdario/mergo"
|
|
)
|
|
|
|
type ptrTransformer struct{}
|
|
|
|
func (t ptrTransformer) Transformer(typ reflect.Type) func(dst, src reflect.Value) error {
|
|
if typ.Kind() == reflect.Ptr {
|
|
return func(dst, src reflect.Value) error {
|
|
if dst.CanSet() {
|
|
if dst.IsNil() {
|
|
dst.Set(src)
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Merge merges 2 objects or maps
|
|
func Merge(dst, src interface{}) error {
|
|
return mergo.Merge(dst, src, mergo.WithTransformers(ptrTransformer{}))
|
|
}
|