반응형
템플릿에서 맵을 통해 반복
체육관 수업 목록 (요가, 필라테스 등)을 표시하려고합니다. 각 수업 유형에는 여러 수업이 있으므로 모든 요가 수업과 모든 필라테스 수업 등을 그룹화하고 싶습니다.
슬라이스를 가져와지도를 만드는 기능을 만들었습니다.
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 템플릿 문서 의 변수 섹션 을 확인하세요 . 범위는 쉼표로 구분 된 두 개의 변수를 선언 할 수 있습니다. 다음이 작동합니다.
{{ range $key, $value := . }}
<li><strong>{{ $key }}</strong>: {{ $value }}</li>
{{ end }}
Herman이 지적했듯이 각 반복에서 인덱스와 요소를 얻을 수 있습니다.
{{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
참고 URL : https://stackoverflow.com/questions/21302520/iterating-through-map-in-template
반응형
'Program Tip' 카테고리의 다른 글
복사 생성자에서 개인 변수에 액세스 할 수있는 이유는 무엇입니까? (0) | 2020.10.11 |
---|---|
내 마스터를 이전 커밋으로 변경하려면 어떻게해야합니까? (0) | 2020.10.11 |
새로 생성 된 특정 폴더를 Git의 .gitignore에 추가합니다. (0) | 2020.10.11 |
AsyncTask for ProgressDialog 내에서 Looper.prepare ()를 호출하지 않은 스레드 내부에 핸들러를 만들 수 없습니다. (0) | 2020.10.11 |
Oracle 11g에서 + 기호를 사용하여 왼쪽 외부 조인 (0) | 2020.10.11 |