Templates 对go html/模板中的数据运行函数

Templates 对go html/模板中的数据运行函数,templates,go,Templates,Go,当有人试图保存go模板中的字符串时,我想在其中添加连字符(-)。我在这里使用go wiki教程中的一些修改代码: 代码: 编辑{{.Title} {{printf“%s”.Body} 符合 <form action="/save/{{.Title}}" method="POST"> 是相关线路。我需要将.Title转换为“快速棕色狐狸”,可能类似于“快速棕色狐狸” 正如您在上面的代码中所看到的,您可以添加一个函数,如println,但我不确定如何为我的案例执行此操作。您的所有

当有人试图保存go模板中的字符串时,我想在其中添加连字符(
-
)。我在这里使用go wiki教程中的一些修改代码:

代码:

编辑{{.Title}
{{printf“%s”.Body}
符合

<form action="/save/{{.Title}}" method="POST">

是相关线路。我需要将
.Title
转换为“快速棕色狐狸”,可能类似于“快速棕色狐狸”


正如您在上面的代码中所看到的,您可以添加一个函数,如
println
,但我不确定如何为我的案例执行此操作。

您的所有*页面结构都是由loadPage函数创建的。因此,创建连字符标题并将其存储在页面结构中似乎是最简单的:

type Page struct {
    Title string
    HyphenTitle string
    Body  []byte
}

func loadPage(title string) (*Page, error) {
    filename := title + ".txt"
    body, err := ioutil.ReadFile(filename)
    if err != nil {
        return nil, err
    }
    return &Page{Title: title, Body: body, HyphenTitle: hyphenate(title)}, nil
}

func hyphenate (s string) string {
    return strings.Replace(s," ","-",-1)
}

然后只需在需要的地方使用
{{.hyphauthentice}

所有*页面结构都是由loadPage函数创建的。因此,创建连字符标题并将其存储在页面结构中似乎是最简单的:

type Page struct {
    Title string
    HyphenTitle string
    Body  []byte
}

func loadPage(title string) (*Page, error) {
    filename := title + ".txt"
    body, err := ioutil.ReadFile(filename)
    if err != nil {
        return nil, err
    }
    return &Page{Title: title, Body: body, HyphenTitle: hyphenate(title)}, nil
}

func hyphenate (s string) string {
    return strings.Replace(s," ","-",-1)
}

然后只需在需要的地方使用
{{.hyphauthentice}

您可以将
模板.FuncMap
传递给模板,然后您可以执行以下操作:

{{ .Title | title }}


您可以将
模板.FuncMap
传递给模板,然后执行以下操作:

{{ .Title | title }}