Golang шаблоны" минус " функция

Я знаю, что в go шаблоны я могу вызвать функцию с именем add для выражения вроде 1 + 1. Но как называется функция для выражения типа 2 - 1?

2 ответов


вы всегда можете определить такую функцию:

package main

import (
    "html/template"
    "net/http"
    "strconv"
)

var funcMap = template.FuncMap{
    "minus": minus,
}

const tmpl = `
<html><body>
    <div>
        <span>{{minus 1 2}}</span>
    </div>
</body></html>`

var tmplGet = template.Must(template.New("").Funcs(funcMap).Parse(tmpl))

func minus(a, b int64) string {
    return strconv.FormatInt(a-b, 10)
}

func getPageHandler(w http.ResponseWriter, r *http.Request) {

    if err := tmplGet.Execute(w, nil); err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
    }
}

func main() {
    http.HandleFunc("/", getPageHandler)
    http.ListenAndServe(":8080", nil)
}

нет add функция включена по умолчанию. Однако вы можете легко написать такие функции самостоятельно. Например:

tmpl := template.Must(template.New("").Funcs(template.FuncMap{
    "minus": func(a, b int) int {
        return a - b
    },
}).Parse("{{ minus 5 2 }}"))
tmpl.Execute(os.Stdout, nil)