In Go, you can efficiently filter a map based on a condition using the following steps:
for range
loop.true
, add the key-value pair to the new filtered map.Here's an example of filtering a map of strings based on a condition where the length of the value is greater than 5:
func filterMap(originalMap map[string]string, condition func(string) bool) map[string]string {
filteredMap := make(map[string]string)
for key, value := range originalMap {
if condition(value) {
filteredMap[key] = value
}
}
return filteredMap
}
func main() {
originalMap := map[string]string{
"key1": "value123",
"key2": "abc",
"key3": "someotherstring",
}
filteredMap := filterMap(originalMap, func(value string) bool {
return len(value) > 5
})
fmt.Println(filteredMap)
}
Output:
map[key1:value123 key3:someotherstring]
In this example, the filterMap
function takes the original map and a condition function as parameters. It iterates over the original map's key-value pairs and checks if the condition function returns true
for each value. If it does, the key-value pair is added to the filtered map. Finally, the filtered map is returned.