v1.16.13
ADDED: * mapsx: ** ListKeys() ** ListValues()
This commit is contained in:
@@ -25,6 +25,58 @@ func GetOk[Map ~map[K]V, K comparable, V any](m Map, k K, v V) (val V, found boo
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
ListKeys returns map `m`'s keys as a slice (unlike [maps.Keys],
|
||||||
|
which returns an iterator via [iter.Seq]).
|
||||||
|
|
||||||
|
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`.
|
Must, unlike [Get] or [GetOk], requires that `k` be in map `m`.
|
||||||
|
|
||||||
|
|||||||
@@ -636,7 +636,7 @@ pre.rouge .gs {
|
|||||||
<div class="details">
|
<div class="details">
|
||||||
<span id="author" class="author">Brent Saner</span><br>
|
<span id="author" class="author">Brent Saner</span><br>
|
||||||
<span id="email" class="email"><a href="mailto:bts@square-r00t.net">bts@square-r00t.net</a></span><br>
|
<span id="email" class="email"><a href="mailto:bts@square-r00t.net">bts@square-r00t.net</a></span><br>
|
||||||
<span id="revdate">Last rendered 2026-07-14 03:02:23 -0400</span>
|
<span id="revdate">Last rendered 2026-07-15 19:04:01 -0400</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="toc" class="toc2">
|
<div id="toc" class="toc2">
|
||||||
<div id="toctitle">Table of Contents</div>
|
<div id="toctitle">Table of Contents</div>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<span id="author" class="author">Brent Saner</span>
|
<span id="author" class="author">Brent Saner</span>
|
||||||
<span id="email" class="email"><bts@square-r00t.net></span>
|
<span id="email" class="email"><bts@square-r00t.net></span>
|
||||||
<span id="revdate">Last rendered 2026-07-14 03:02:27 -0400</span>
|
<span id="revdate">Last rendered 2026-07-15 19:04:05 -0400</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user