web-dev-qa-db-fra.com

Arithmétique dans les modèles Go

J'essaie de réaliser une chose très simple dans un modèle Go et échoue!

L'action range me permet de parcourir un tableau avec son index de base zéro, comme suit:

{{range $index, $element := .Pages}}
  Number: {{$index}}, Text: {{element}}
{{end}}

Cependant, j'essaie de générer des indices qui commencent à compter à partir de 1. Ma première tentative a échoué:

Number: {{$index + 1}}

Cela jette un illegal number syntax: "+" Erreur.

J'ai regardé dans la documentation officielle de go-lang et je n'ai rien trouvé de particulier concernant l'opération arithmétique à l'intérieur du modèle.

Qu'est-ce que je rate?

22
Ripul

Vous devez écrire une fonction personnalisée pour ce faire.

http://play.golang.org/p/WsSakENaC

package main

import (
    "os"
    "text/template"
)

func main() {
    funcMap := template.FuncMap{
        // The name "inc" is what the function will be called in the template text.
        "inc": func(i int) int {
            return i + 1
        },
    }

    var strs []string
    strs = append(strs, "test1")
    strs = append(strs, "test2")

    tmpl, err := template.New("test").Funcs(funcMap).Parse(`{{range $index, $element := .}}
  Number: {{inc $index}}, Text:{{$element}}
{{end}}`)
    if err != nil {
        panic(err)
    }
    err = tmpl.Execute(os.Stdout, strs)
    if err != nil {
        panic(err)
    }
}
31
chendesheng

S'il vous arrive d'écrire un modèle Go à utiliser dans consul-template , vous pouvez trouver leurs --- fonctions arithmétiques utiles:

Number: {{add $index 1}}
14
phs