Skip to content

proposal: x/exp/maps: add Entries #54012

Closed
@dsnet

Description

@dsnet

There are helper functions to extract the keys and the values, but not one to extract both together.

I propose adding:

type Entry[K comparable, V any] struct {
	K K
	V V
}

func Entries[M ~map[K]V, K comparable, V any](m M) []Entry[K, V] {
	r := make([]Entry[K, V], 0, len(m))
	for k, v := range m {
		r = append(r, Entry[K, V]{k, v})
	}
	return r
}

I often find myself sorting a map based on the value, but needing the key and value paired together.

This API would ease that pattern:

entries := maps.Entries(m)
slices.SortFunc(entries, func(x, y maps.Entry[K, V]) bool {
    return x.V < y.V
})

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions