func Map(dst, src interface{}, opts ...func(*Config)) error {
	return _map(dst, src, opts...)
}
func Map(dst, src interface{}, opts ...func(*Config)) error {
	return _map(dst, src, opts...)
}
func Map ( dst , src interface { } , opts ... func ( * Config ) ) error { return _map ( dst , src , opts ... ) }
// Map sets fields' values in dst from src.
// src can be a map with string keys or a struct. dst must be the opposite:
// if src is a map, dst must be a valid pointer to struct. If src is a struct,
// dst must be map[string]interface{}.
// It won't merge unexported (private) fields and will do recursively
// any exported field.
// If dst is a map, keys will be src fields' names in lower camel case.
// Missing key in src that doesn't match a field in dst will be skipped. This
// doesn't apply if dst is a map.
// This is separated method from Merge because it is cleaner and it keeps sane
// semantics: merging equal types, mapping different (restricted) types.
Map sets fields values in dst from src . src can be a map with string keys or a struct . dst must be the opposite : if src is a map dst must be a valid pointer to struct . If src is a struct dst must be map [ string ] interface {} . It won t merge unexported ( private ) fields and will do recursively any exported field . If dst is a map keys will be src fields names in lower camel case . Missing key in src that doesn t match a field in dst will be skipped . This doesn t apply if dst is a map . This is separated method from Merge because it is cleaner and it keeps sane semantics : merging equal types mapping different ( restricted ) types .