Heim  >  Artikel  >  Backend-Entwicklung  >  Go Template ruft Variablen dynamisch ab

Go Template ruft Variablen dynamisch ab

PHPz
PHPznach vorne
2024-02-05 23:36:041194Durchsuche

Go Template 动态获取变量

Frageninhalt

Meine YML-Parameter sehen so aus

nodes: one, two
instanceminone: 1
instancemaxone: 2
instancemintwo: 4
instancemaxtwo: 6

Gibt es eine Möglichkeit, z. B. „instanceminone“ mithilfe von Go-Vorlagen dynamisch zu lesen, wobei der Variablenname aus + dem dynamischen Wert aus der Knotenliste besteht? instancemin

So etwas in der Art (das funktioniert natürlich nicht, sondern gibt nur eine Vorstellung davon, was ich erreichen möchte)

{{ - range $nodeName := (split .Parameters.nodes) } } } }
   instance-min: {{ .Parameters.instanceMin$nodeName }}
   instance-max: {{ .Parameters.instanceMan$nodeName }}
{{ - end }}


Richtige Antwort


Um das zu erreichen, was Sie wollen, müssen Sie 2 Aufgaben lösen:

    String-Verkettung
  • Indizierung mit dynamischen Werten
Für die Verkettung können Sie die integrierte

-Funktion wie print verwenden

{{ $key := print "instancemin" $nodename }}

Für die Indizierung verwenden Sie die integrierte

-Funktion: index

instance-min: {{ index $.parameters $key }}

(Hinweis:

bezieht sich auf die Außenseite der Schleifenvariablen.) {{range}} 操作会更改点,因此在其中您需要 $

oder eine Zeile:

instance-min: {{ index $.parameters (print "instancemin" $nodename) }}

Sehen Sie sich eine funktionierende Demo an:

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 }}`

Dies wird ausgegeben (versuchen Sie es auf

Go Playground):

instance-min: 1
instance-max: 2
instance-min: 4
instance-max: 6

Das obige ist der detaillierte Inhalt vonGo Template ruft Variablen dynamisch ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen