4 ms·
I want to understand the purpose of maps.All(). In the example: m := map[string]int{"a": 1, "b": 2, "c": 3} for k, v := range maps.All(m) { fmt.Prin
by metadat 2y ago
I want to understand the purpose of maps.All().
In the example:
m := map[string]int{"a": 1, "b": 2, "c": 3}
for k, v := range maps.All(m) {
fmt.Printf("%v:%v ", k, v)
}
fmt.Println("")
for k, v := range m {
fmt.Printf("%v:%v ", k, v)
}
These both output the same thing. What's the point of the addition?
Slices.All() seems similarly redundant and pointless.
Surely I must be misunderstanding something, I hope.
- sakjur 2y agoThey’re useful because they let you pass a slice or map to something built to handle the new func(func (…) bool) style iterators. If I create a IterateOver(fn func(func (K, V any) bool)) function, you cannot pass a slice since that doesn’t match fn’s type, but if you wrap it with slices.All it’ll work.
- deleted 2y ago[deleted]
- ianlancetaylor 2y agoYou can use it with other functions that use iterators. For example, here is code that makes a copy of a map keeping only the even keys. maps.Collect(xiter.Filter2(func(k, v int) bool { return k%2 == 0 }, maps.All(m)))