23 lines
509 B
Go
23 lines
509 B
Go
|
package generics
|
||
|
|
||
|
// FlattenMap takes a map and flattens it to an array
|
||
|
func FlattenMap[K comparable, V any](m map[K]V) []V {
|
||
|
slice := make([]V, 0, len(m))
|
||
|
for k := range m {
|
||
|
slice = append(slice, m[k])
|
||
|
}
|
||
|
return slice
|
||
|
}
|
||
|
|
||
|
// FlattenMapOrdered takes a map content in a specific order
|
||
|
func FlattenMapOrdered[K comparable, V any](m map[K]V, orderBy []K) []V {
|
||
|
slice := make([]V, 0, len(orderBy))
|
||
|
|
||
|
for _, key := range orderBy {
|
||
|
if v, ok := m[key]; ok {
|
||
|
slice = append(slice, v)
|
||
|
}
|
||
|
}
|
||
|
return slice
|
||
|
}
|