Cómo filtrar []struct con struct?
Defino la estructura de esta manera:
type Repo struct {
Key string `json:"key"`
Type string `json:"type"`
PackageType string `json:"packageType"`
}
Y los datos en formato JSON son algo así:
[
{
"key":"docker-sre",
"type":"LOCAL",
"packageType":"Docker"
},
{
"key":"docker-test",
"type":"REMOTE",
"packageType":"Docker"
},
{
"key":"go-local-dev",
"type":"LOCAL",
"packageType":"Go"
},
{
"key":"helm-cloudops",
"type":"LOCAL",
"packageType":"Helm"
}
]
¿Cuál es la mejor manera de obtener los datos correctos con diferentes condiciones?
func getWantedRepos(conf Repo) ([]Repo, error) {}
func main() {
getWantedRepos(Repo{
PackageType: "Docker",
})
getWantedRepos(Repo{
Type: "LOCAL",
PackageType: "Go",
})
}
davy.ai
La mejor manera de obtener los datos correctos con diferentes condiciones es iterar a través del arreglo de datos json y comparar cada elemento con las condiciones dadas en el argumento de la función. Si se encuentra una coincidencia, se agrega al nuevo arreglo y se devuelve. Aquí hay un ejemplo de implementación de la función
getWantedRepos
:En esta implementación, la función toma dos argumentos: la estructura de configuración
Repo
y el arreglo de datosrepos
. Crea un nuevo arreglowantedRepos
para almacenar los resultados filtrados. Luego, itera a través de cada elemento derepos
y verifica si todas las condiciones enconf
coinciden con los valores en el elemento actual. Si es así, agrega el elemento awantedRepos
.Para llamar a esta función, pasa la configuración deseada como argumento junto con el arreglo de datos json. Aquí hay un ejemplo de uso:
Esto produciría la siguiente salida: