文档:https://pkg.go.dev/github.com/imdario/mergo

Func

  1. // Map从src中设置dst中的字段值。SRC可以是一个以字符串为key的map 或 结构体。
  2. // DST必须相反:如果SRC是一个map, DST必须是一个有效的指向struct的指针。
  3. // 如果src是一个struct, dst必须为map[string]interface{}。
  4. // 它不会合并未导出的(私有)字段,并将递归地做任何导出的字段。
  5. // 如果dst是一个map, key将是src字段的名称,小写驼峰形式。
  6. func Map(dst, src interface{}, opts ...func(*Config)) error
  7. // 如果dst结构上的值类型属性本身不为空,Merge将使用相应的src属性填充它们的任何空值类型属性。
  8. // DST和SRC必须是有效的同类型结构,DST必须是指向结构的指针。
  9. // 它不会合并未导出的(私有)字段,并将递归地做任何导出的字段
  10. func Merge(dst, src interface{}, opts ...func(*Config)) error

type Config

  1. type Config struct {
  2. Overwrite bool
  3. AppendSlice bool
  4. TypeCheck bool
  5. Transformers Transformers
  6. // contains filtered or unexported fields
  7. }
  8. func WithAppendSlice(config *Config) // slice不是覆盖,而是追加
  9. func WithOverride(config *Config) // 使用非空SRC属性值覆盖非空DST属性
  10. func WithSliceDeepCopy(config *Config) // 一个个复制slice中的值