Maison > Article > développement back-end > Go Template obtient dynamiquement les variables
Mes paramètres yml ressemblent à
nodes: one, two instanceminone: 1 instancemaxone: 2 instancemintwo: 4 instancemaxtwo: 6
Existe-t-il un moyen de lire dynamiquement, par exemple, instanceminone à l'aide de modèles go, où le nom de la variable se compose de instancemin
+ la valeur dynamique de la liste de nœuds ?
Quelque chose comme ça (cela ne fonctionne évidemment pas mais donne juste une idée de ce que j'essaie de réaliser)
{{ - range $nodeName := (split .Parameters.nodes) } } } } instance-min: {{ .Parameters.instanceMin$nodeName }} instance-max: {{ .Parameters.instanceMan$nodeName }} {{ - end }}
Pour réaliser ce que tu veux, tu dois résoudre 2 tâches :
Pour la concaténation, vous pouvez utiliser la fonction print
intégrée comme
{{ $key := print "instancemin" $nodename }}
Pour l'indexation, utilisez la fonction index
intégrée :
instance-min: {{ index $.parameters $key }}
(Remarque : {{range}}
操作会更改点,因此在其中您需要 $
pour faire référence à l'extérieur de la variable de boucle.)
ou une ligne :
instance-min: {{ index $.parameters (print "instancemin" $nodename) }}
Voir une démo fonctionnelle :
func main() { t := template.must(template.new("").parse(src)) params := map[string]any{ "parameters": map[string]any{ "nodes": []string{"one", "two"}, "instanceminone": 1, "instancemaxone": 2, "instancemintwo": 4, "instancemaxtwo": 6, }, } if err := t.execute(os.stdout, params); err != nil { panic(err) } } const src = `{{- range $idx, $nodename := .parameters.nodes }} instance-min: {{ index $.parameters (print "instancemin" $nodename) }} instance-max: {{ index $.parameters (print "instancemax" $nodename) }} {{- end }}`
Cela affichera (essayez-le sur go terrain de jeu) :
instance-min: 1 instance-max: 2 instance-min: 4 instance-max: 6
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!