golang-如何在模板中拆分字符串

golang-如何在模板中拆分字符串,go,Go,我尝试使用template.FuncMap,但出现了紧急错误 panic: runtime error: invalid memory address or nil pointer dereference 代码: a、 html //i want to split tags and range {{$arr := Split .Tags ","}} {{range $k, $v := $arr}} <a href="{{$v}}">{{$v}}</a> {{en

我尝试使用template.FuncMap,但出现了紧急错误

panic: runtime error: invalid memory address or nil pointer dereference
代码:

a、 html

//i want to split tags and range
{{$arr := Split .Tags ","}}
{{range $k, $v := $arr}}
    <a href="{{$v}}">{{$v}}</a>
{{end}}
//我想拆分标记和范围
{{$arr:=Split.Tags“,”}
{{range$k,$v:=$arr}}
{{end}

谢谢。

您忽略了
模板.ParseFiles
返回的错误,这可能会告诉您您的问题。ParseFiles可能引发错误,因为在解析模板时未定义函数
Split
。永远不要忽视错误

编辑

要使其工作,请执行以下操作:

tplFuncMap =  make(template.FuncMap)  
tplFuncMap["Split"] = Split  
tmpl, err = template.New("").Funcs(tplFuncMap).ParseFiles("a.html", "b.html")

区别在于
FuncMap
是在分析模板之前定义的。

您错过了重要的一点(错误的原因):在
tpl
上访问
Funcs
,即
nil
@Tyler Egeto,在实际代码中,我有输出错误。我确信“a.html”拆分函数中存在一些问题,因为如果我对代码进行注释,它工作得很好。在模板中删除拆分函数时,它工作得很好的原因是解析器不再找到未定义的函数。正如尼莫所提到的,我本可以说得更清楚。我正在更新一个例子。
tplFuncMap =  make(template.FuncMap)  
tplFuncMap["Split"] = Split  
tmpl, err = template.New("").Funcs(tplFuncMap).ParseFiles("a.html", "b.html")