当前位置: 首页 > 面试题库 >

Golang模板的“减号”功能

施文彬
2023-03-14
问题内容

我知道在go模板中我可以调用以add表达式命名的函数,例如1 + 1。但是如何为表达式命名函数2 - 1呢?


问题答案:

您总是可以定义这样的功能:

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


 类似资料:
  • 问题内容: 我正在按照本教程进行学习: golang教程- Wiki, 并且我设法使除“其他任务”部分中的最后一点之外的所有内容都起作用。我对本教程的实现: html / template引擎会按预期方式打印定位标记,但会使用html实体对其进行转义。我还没有找到合适的方法。 问题答案: 使用template.HTML将正文标记为安全HTML。 以下函数将正文转换为HTML。 使用以下方式渲染页面

  • 问题内容: 一个布局模板和三个子模板。 layout.html tags.html content.html comment.html 代码 我很困惑如何渲染每个子模板并将结果组合到布局输出中。 谢谢。 问题答案: 与往常一样,该文档是一个很好的起点。 我在操场上写了一个工作实例 解释一下: 您不需要struct文字中的字符串:,而不是 您只能将单个对象传递给模板才能执行,这将按照指令中的要求将对

  • 问题内容: 我正在尝试显示用逗号分隔的值的列表,并且不想在最后一项(或只有一项,如果只有一项)之后显示逗号。 到目前为止,我的代码: 当前输出: 如何摆脱尾随逗号 问题答案: 您可以使用的一个不错的技巧是: 这是有效的,因为第一个索引为0,在if语句中返回false。因此,此代码为第一个索引返回false,然后在每个后续迭代的前面放置一个逗号。这将导致逗号分隔的列表没有前导或尾随逗号。

  • 问题内容: 它能够写,甚至。 但是,我找不到要添加值* -1之类的内容。不幸的是,这行不通。 问题答案: 你可以轻松地制作自己的模板标签:

  • 问题内容: 尝试访问传递给模板的函数时出现错误: 有人可以让我知道我在做什么错吗? 模板文件(struct.tpl): 调用文件: 这是用于生成struct样板代码的程序(以防万一有人想知道为什么我要在模板中这样做)。 问题答案: 自定义函数需要在解析模板之前进行注册,否则解析器将无法分辨标识符是否为有效的函数名。模板被设计为可静态分析的,这是必需的。 您可以先使用创建一个新的未定义模板,并且除了

  • 问题内容: 我有一个Golang模板,定义如下 然后在我的一个文件中使用它: “测试”之后,点是什么意思?Golang模板文档说: 但是我不确定是什么管道。阅读文档没有结果,有人可以再解释一次吗? 另外,为什么我们必须以点开始的值?例如。这也是一种管道吗? 先感谢您! 问题答案: 有2个软件包,和。 它们具有相同的接口,但是该程序包用于生成安全的HTML输出,以防止代码注入,因此应使用该程序包,而