Golang模板中的字符串切片范围

时间:2019-01-12 01:49:44

标签: go go-templates

我有一个结构,其中包含一片类型为string的切片,如下所示。

"hEllo"

在我的html模板文件中,我希望覆盖字符串切片。但是,各个字段只是没有任何结构名称的字符串。如何遍历包含简单类型(例如字符串,整数等)的切片?

2 个答案:

答案 0 :(得分:3)

使用.来引用一个简单的值,例如字符串,整数等。

 {{range .DataFields}}{{.}}{{end}}

Run it on the Playground

您也可以像在{{range $v := .DataFields}}{{$v}}{{end}}中一样分配给模板变量,但这是额外的工作。拥抱.

答案 1 :(得分:1)

或将其分配给变量,类似于普通的Go range子句:

 {{range $element := .DataFields}} {{$element}} {{end}}

Run it on the Playground

docs for text/template(用作html / template的接口文档):

{{range pipeline}} T1 {{end}}
    The value of the pipeline must be an array, slice, map, or channel.
    If the value of the pipeline has length zero, nothing is output;
    otherwise, dot is set to the successive elements of the array,
    slice, or map and T1 is executed. If the value is a map and the
    keys are of basic type with a defined order ("comparable"), the
    elements will be visited in sorted key order.
     

...

     

动作内部的管道可以初始化变量以捕获结果。初始化具有语法

     

$variable := pipeline

     

...

     

如果“范围”操作初始化变量,则该变量将设置为迭代的连续元素。另外,“范围”可以声明两个变量,以逗号分隔:

     

range $index, $element := pipeline

     

在这种情况下,将$ index和$ element分别设置为数组/切片索引或映射键和元素的连续值。 请注意,如果只有一个变量,则会为其分配元素;这与Go range子句中的约定相反。

     

(我强调的粗体部分)