19 lines
378 B
Go
19 lines
378 B
Go
package dirty
|
|
|
|
import "maps"
|
|
|
|
func CloneMapIfNil[K comparable, V any, T any](dirty *T, original *T, getMap func(*T) map[K]V) map[K]V {
|
|
dirtyMap := getMap(dirty)
|
|
if dirtyMap == nil {
|
|
if original == nil {
|
|
return make(map[K]V)
|
|
}
|
|
originalMap := getMap(original)
|
|
if originalMap == nil {
|
|
return make(map[K]V)
|
|
}
|
|
return maps.Clone(originalMap)
|
|
}
|
|
return dirtyMap
|
|
}
|