30 lines
512 B
Go
30 lines
512 B
Go
package momap
|
|
|
|
func ToSlice[K comparable, V, T any](m map[K]V, fn func(k K, v V) T) []T {
|
|
if m == nil {
|
|
return nil
|
|
}
|
|
|
|
ts := make([]T, 0, len(m))
|
|
for k, v := range m {
|
|
ts = append(ts, fn(k, v))
|
|
}
|
|
return ts
|
|
}
|
|
|
|
func ToSliceWithError[K comparable, V, T any](m map[K]V, fn func(k K, v V) (T, error)) ([]T, error) {
|
|
if m == nil {
|
|
return nil, nil
|
|
}
|
|
|
|
ts := make([]T, 0, len(m))
|
|
for k, v := range m {
|
|
w, err := fn(k, v)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
ts = append(ts, w)
|
|
}
|
|
return ts, nil
|
|
}
|