在模板中遍历映射

我想显示一个列表健身课(瑜伽,普拉提等)。 每个class级有几个class级,所以我想把所有的瑜伽课程和所有的普拉提课程分组。

我做了这个function来分片并制作一张地图

func groupClasses(classes []entities.Class) map[string][]entities.Class { classMap := make(map[string][]entities.Class) for _, class := range classes { classMap[class.ClassType.Name] = append(classMap[class.ClassType.Name], class) } return classMap } 

问题是现在我怎么才能遍历它,根据http://golang.org/pkg/text/template/ ,你需要以.Key格式访问它,我不知道密钥(除非我也通过了进入模板的一把钥匙)。 我如何在我的视图中解开这张地图。

我现在所有的都是

 {{ . }} 

其中显示如下所示:

 map[Pilates:[{102 PILATES ~/mobifit/video/ocen.mpg 169 40 2014-05-03 23:12:12 +0000 UTC 2014-05-03 23:12:12 +0000 UTC 1899-12-30 00:00:00 +0000 UTC {PILATES Pilates 1 2014-01-22 21:46:16 +0000 UTC} {1 leebrooks0@gmail.com password SUPERADMIN Lee Brooks {Male true} {1990-07-11 00:00:00 +0000 UTC true} {1.85 true} {88 true} 2014-01-22 21:46:16 +0000 UTC {0001-01-01 00:00:00 +0000 UTC false} {0001-01-01 00:00:00 +0000 UTC false} {0001-01-01 00:00:00 +0000 UTC false}} [{1 Mat 2014-01-22 21:46:16 +0000 UTC}]} {70 PILATES ~/mobifit/video/ocen.mpg 119 66 2014-03-31 15:12:12 +0000 UTC 2014-03-31 15:12:12 +0000 UTC 1899-12-30 00:00:00 +0000 UTC 

检查Go模板文档中的variables部分 。 范围可以声明两个variables,用逗号分隔。 以下应该工作:

 {{ range $key, $value := . }} <li><strong>{{ $key }}</strong>: {{ $value }}</li> {{ end }} 

正如赫尔曼所指出的那样,你可以从每次迭代中得到索引和元素。

 {{range $index, $element := .}}{{$index}} {{range $element}}{{.Value}} {{end}} {{end}} 

工作示例:

 package main import ( "html/template" "os" ) type EntetiesClass struct { Name string Value int32 } // In the template, we use rangeStruct to turn our struct values // into a slice we can iterate over var htmlTemplate = `{{range $index, $element := .}}{{$index}} {{range $element}}{{.Value}} {{end}} {{end}}` func main() { data := map[string][]EntetiesClass{ "Yoga": {{"Yoga", 15}, {"Yoga", 51}}, "Pilates": {{"Pilates", 3}, {"Pilates", 6}, {"Pilates", 9}}, } t := template.New("t") t, err := t.Parse(htmlTemplate) if err != nil { panic(err) } err = t.Execute(os.Stdout, data) if err != nil { panic(err) } } 

输出:

 Pilates 3 6 9 Yoga 15 51 

游乐场: http : //play.golang.org/p/4ISxcFKG7v

Interesting Posts