This commit is contained in:
Mike Schwörer 2023-05-24 22:01:29 +02:00
parent 021465e524
commit b0d3ce8c1c
Signed by: Mikescher
GPG Key ID: D3C7172E0A70F8CF

View File

@ -1,5 +1,10 @@
package langext package langext
type MapEntry[T comparable, V any] struct {
Key T
Value V
}
func MapKeyArr[T comparable, V any](v map[T]V) []T { func MapKeyArr[T comparable, V any](v map[T]V) []T {
result := make([]T, 0, len(v)) result := make([]T, 0, len(v))
for k := range v { for k := range v {
@ -8,6 +13,14 @@ func MapKeyArr[T comparable, V any](v map[T]V) []T {
return result return result
} }
func MapValueArr[T comparable, V any](v map[T]V) []V {
result := make([]V, 0, len(v))
for _, mv := range v {
result = append(result, mv)
}
return result
}
func ArrToMap[T comparable, V any](a []V, keyfunc func(V) T) map[T]V { func ArrToMap[T comparable, V any](a []V, keyfunc func(V) T) map[T]V {
result := make(map[T]V, len(a)) result := make(map[T]V, len(a))
for _, v := range a { for _, v := range a {
@ -16,6 +29,17 @@ func ArrToMap[T comparable, V any](a []V, keyfunc func(V) T) map[T]V {
return result return result
} }
func MapToArr[T comparable, V any](v map[T]V) []MapEntry[T, V] {
result := make([]MapEntry[T, V], 0, len(v))
for mk, mv := range v {
result = append(result, MapEntry[T, V]{
Key: mk,
Value: mv,
})
}
return result
}
func CopyMap[K comparable, V any](a map[K]V) map[K]V { func CopyMap[K comparable, V any](a map[K]V) map[K]V {
result := make(map[K]V, len(a)) result := make(map[K]V, len(a))
for k, v := range a { for k, v := range a {