Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 如何从template.FuncMap返回HTML模板?_Templates_Go - Fatal编程技术网

Templates 如何从template.FuncMap返回HTML模板?

Templates 如何从template.FuncMap返回HTML模板?,templates,go,Templates,Go,我在一次会议上问了这个问题,但没有得到答复 我正在写一篇文章,我遇到了一个难题,那就是如何标记不同的媒体 我的当前代码如下: 这肯定是错误的。我不知道如何使用模板在这里的光 我看到的所有使用template.FuncMap的示例都只使用字符串 简化示例: 理想情况下,我会在这里使用html模板,而不是fmt.Sprintf。是的,我意识到我不是HTML转义文件名,这是错误的,但我不知道如何从这个函数再次使用HTML模板 提前感谢您的指导,您应该将逻辑(功能)与演示(模板)分开。 在templat

我在一次会议上问了这个问题,但没有得到答复

我正在写一篇文章,我遇到了一个难题,那就是如何标记不同的媒体

我的当前代码如下: 这肯定是错误的。我不知道如何使用模板在这里的光

我看到的所有使用template.FuncMap的示例都只使用字符串

简化示例:

理想情况下,我会在这里使用html模板,而不是fmt.Sprintf。是的,我意识到我不是HTML转义文件名,这是错误的,但我不知道如何从这个函数再次使用HTML模板

提前感谢您的指导,

您应该将逻辑(功能)与演示(模板)分开。 在
template.FuncMap
中注册的函数不应依赖模板作为其输入来生成输出。如果要将HTML模板作为函数输出返回,则应手动生成它(使用
fmt.Sprintf
等)

在您的情况下,您只需注册一个函数来检查媒体类型,然后使用模板的操作生成不同的输出。该函数可能如下所示:

func matchType(ext, s string) bool {
    return strings.ToLower(ext) == strings.ToLower(path.Ext(s))
}
{{ range .Media }}<p>
    {{if . | matchType ".jpg"}}<img src={{.}}>
    {{else if . | matchType ".mp4"}}<video controls src={{.}}></video>
    {{else}}{{.}}
    {{end}}</p>
{{ end }}
模板如下所示:

func matchType(ext, s string) bool {
    return strings.ToLower(ext) == strings.ToLower(path.Ext(s))
}
{{ range .Media }}<p>
    {{if . | matchType ".jpg"}}<img src={{.}}>
    {{else if . | matchType ".mp4"}}<video controls src={{.}}></video>
    {{else}}{{.}}
    {{end}}</p>
{{ end }}
{{range.Media}}
{{if.| matchType.jpg}
{{else if.| matchType.mp4}
{{else}{{.}}
{{end}

{{end}

一个基于简化示例的工作示例:

谢谢,该方法似乎更好一些,但我不确定是否喜欢“if,else,else,else”类型的结构。