v1.16.13
ADDED: * mapsx: ** ListKeys() ** ListValues()
This commit is contained in:
+55
-3
@@ -26,10 +26,62 @@ func GetOk[Map ~map[K]V, K comparable, V any](m Map, k K, v V) (val V, found boo
|
||||
}
|
||||
|
||||
/*
|
||||
Must, unlike [Get] or [GetOk], requires that `k` be in map `m`.
|
||||
ListKeys returns map `m`'s keys as a slice (unlike [maps.Keys],
|
||||
which returns an iterator via [iter.Seq]).
|
||||
|
||||
A panic with error [ErrNotFound] will be raised if `k` is not present.
|
||||
Otherwise the found value will be returned.
|
||||
ListKeys will return nil if `m` is nil, and an empty slice
|
||||
if `m` is non-nil but empty.
|
||||
|
||||
The ordering of `mapKeys` is unpredictable as maps are unsorted
|
||||
and no explicit sorting is performed.
|
||||
*/
|
||||
func ListKeys[Map ~map[K]V, K comparable, V any](m Map) (mapKeys []K) {
|
||||
|
||||
var k K
|
||||
|
||||
if m == nil {
|
||||
return
|
||||
}
|
||||
mapKeys = make([]K, 0, len(m))
|
||||
|
||||
for k, _ = range m {
|
||||
mapKeys = append(mapKeys, k)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
ListValues returns map `m`'s values as a slice (unlike [maps.Values],
|
||||
which returns an iterator via [iter.Seq]).
|
||||
|
||||
ListValues will return nil if `m` is nil, and an empty slice
|
||||
if `m` is non-nil but empty.
|
||||
|
||||
The ordering of `mapVals` is unpredictable as maps are unsorted
|
||||
and no explicit sorting is performed.
|
||||
*/
|
||||
func ListValues[Map ~map[K]V, K comparable, V any](m Map) (mapVals []V) {
|
||||
|
||||
var v V
|
||||
|
||||
if m == nil {
|
||||
return
|
||||
}
|
||||
mapVals = make([]V, 0, len(m))
|
||||
|
||||
for _, v = range m {
|
||||
mapVals = append(mapVals, v)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
Must, unlike [Get] or [GetOk], requires that `k` be in map `m`.
|
||||
|
||||
A panic with error [ErrNotFound] will be raised if `k` is not present.
|
||||
Otherwise the found value will be returned.
|
||||
*/
|
||||
func Must[Map ~map[K]V, K comparable, V any](m Map, k K) (val V) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user