1. ホーム
  2. go

[解決済み] テンプレートでマップを繰り返し処理する

2022-10-15 17:56:13

質問

ジムのクラス(ヨガ、ピラティスなど)のリストを表示しようとしています。各クラスタイプにはいくつかのクラスがあるので、私はすべてのヨガのクラス、およびすべてのピラティスのクラスなどをグループ化したいと思います。

スライスを取得してマップを作成するためにこの関数を作りました。

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 [email protected] 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 

どのように解決するのですか?

以下の 変数セクション を確認してください。範囲はカンマで区切られた2つの変数を宣言することができます。以下のようにするとうまくいくはずです。

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