我有一些Go代码返回值的映射,但我只需要一些结果。有没有办法可以针对字符串数组(或类似的东西)测试/过滤地图的键,以提供简化的结果而不是一堆if语句?我查找的所有样本都有固定值来过滤。
下面是一个简单的例子,但是我没有提供我希望得到可能值列表的字符串,所以我可以得到一个简化列表。
package main
import "fmt"
type colors struct {
animal string
COLOR []string
}
func main() {
// Map animal names to color strings.
colors := map[string]string{
"bird": "blue",
"snake": "green",
"cat": "black",
}
// Display string.
fmt.Println(colors)
}
答案 0 :(得分:1)
是的,您可以使用range
测试/过滤地图。如果您拥有所有可能的值,则可以使用键/值查找将它们与地图进行比较,并根据该结构制作结构。
package main
import (
"fmt"
)
type colors struct {
animal string
COLOR []string
}
func main() {
//the list of values
possibleValues := []string{"bird","dog", "cat"}
// Map animal names to color strings.
foo := map[string]string{
"bird": "blue",
"snake": "green",
"cat": "black",
}
//slice of objects of your struct
objects := []colors{}
//for every value in the possible values
for _, v := range possibleValues {
//if it's in the map, make a new struct and append it to the slice of objects
if val,ok := foo[v]; ok {
objects = append(objects, colors{animal:v,COLOR:[]string{val}})
}
}
// Display string.
fmt.Println(objects)
}