2023-01-28 22:12:39 +00:00
|
|
|
package maputils
|
|
|
|
|
|
|
|
func Values[K comparable, T any](ts map[K]T) []T {
|
|
|
|
values := make([]T, 0, len(ts))
|
|
|
|
for _, v := range ts {
|
|
|
|
values = append(values, v)
|
|
|
|
}
|
|
|
|
return values
|
|
|
|
}
|
|
|
|
|
2023-04-14 05:35:43 +00:00
|
|
|
func MapValues[K comparable, T, U any](ts map[K]T, fn func(t T) U) map[K]U {
|
|
|
|
us := make(map[K]U)
|
|
|
|
|
|
|
|
for k, t := range ts {
|
|
|
|
us[k] = fn(t)
|
|
|
|
}
|
|
|
|
|
|
|
|
return us
|
|
|
|
}
|
|
|
|
|
2023-01-28 22:12:39 +00:00
|
|
|
func MapValuesWithError[K comparable, T, U any](ts map[K]T, fn func(t T) (U, error)) (map[K]U, error) {
|
|
|
|
us := make(map[K]U)
|
|
|
|
|
|
|
|
for k, t := range ts {
|
|
|
|
var err error
|
|
|
|
us[k], err = fn(t)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return us, nil
|
|
|
|
}
|