package common import ( "fmt" "github.com/jinzhu/copier" ) func Copy[T any](src *T, deepCopy bool) (*T, error) { if src == nil { return nil, fmt.Errorf("copy source cannot be nil") } var dst T if deepCopy { err := copier.CopyWithOption(&dst, src, copier.Option{DeepCopy: true, IgnoreEmpty: true}) if err != nil { return nil, err } } else { err := copier.Copy(&dst, src) if err != nil { return nil, err } } return &dst, nil }