Data collections (lists/slices and dicts/maps)
#
Maps
#
| Razor | Gotemplate | Note | 
|---|
| @razorDict := dict("test", 1, "test2", 2); | {{- set $ "goDict" (dict "test" 1 "test2" 2) }} | Creation | 
| @razorDict2 := dict("test3", 3, "test5", 5); | {{- set $ "goDict2" (dict "test3" 3 "test5" 5) }} | Creation | 
| @set(.razorDict, "test2", 3); | {{- set .goDict "test2" 3 }} | Update | 
| @set(.razorDict, "test3", 4); | {{- set .goDict "test3" 4 }} | Update | 
| @razorDict = merge(razorDict, razorDict2); | {{- set $ "goDict" (merge .goDict .goDict2) }} | Merge (First dict has priority) | 
| @razorDict.test3; | {{ $.goDict.test3 }} | Should be 4 | 
| @razorDict.test5; | {{ $.goDict.test5 }} | Should be 5 | 
| @razorDict["test", "test3", "undef"] | {{ extract $.goDict "test" "test3" "undef" }} | Extract values, should be [1,4,null] | 
| @razorDict["test":"test9"] | {{ slice $.goDict "test" "test9" }} | Slice values, should be [1,3,4,5] | 
| @razorDict["test9":"test"] | {{ slice $.goDict "test9" "test" }} | Slice values, should be [5,4,3,1] | 
| @keys(razorDict) | {{ keys $.goDict }} | Get keys, should be ["test","test2","test3","test5"] | 
| @values(razorDict) | {{ values $.goDict }} | Get values, should be [1,3,4,5] | 
Looping (Maps)
#
Razor (Maps)
#
@-foreach($key, $value := razorDict)
    @{key}, @{value}, @get($.razorDict, $key)
@-end foreach
Gotemplate (Maps)
#
{{- range $key, $value := .goDict }}
    {{ $key }}, {{ $value }}, {{ get $.goDict $key }}
{{- end }}
Result (Maps)
#
    test, 1, 1
    test2, 3, 3
    test3, 4, 4
    test5, 5, 5
Slices
#
| Razor | Gotemplate | Note | 
|---|
| @razorList := list("test1", "test2", "test3"); | {{- set $ "goList" (list "test1" "test2" "test3") }} | Creation | 
| @razorList = append(razorList, "test4"); | {{- set $ "goList" (append .goList "test4") }} | Append | 
| @razorList = prepend(razorList, "test0"); | {{- set $ "goList" (prepend .goList "test0") }} | Prepend | 
| @razorList; | {{ $.goList }} | Should be ["test0","test1","test2","test3","test4"] | 
| @contains(razorList, "test1", "test2"); | {{- contains .goList "test1" "test2" }} | Check if element is in list | 
| @has("test1", razorList); | {{- has "test1" .goList }} | has is an alias to contains | 
| @has(razorList, "test1"); | {{- has .goList "test1" }} | has Support inversion of argument if the first one is not a list | 
| @has(razorList, "test1", "test2"); | {{- has .goList "test1" "test2" }} | has can also test for many elements | 
| @razorList.Contains("test1", "test2"); | {{ .goList.Contains "test1" "test2" }} | List also support using methods | 
| @razorList.Reverse(); | {{ .goList.Reverse }} | Should be ["test4","test3","test2","test1","test0"] | 
Looping (Slice)
#
Razor (Slice)
#
@-foreach($index, $value := razorList)
    @{index}, @{value}, @extract($.razorList, $index)
@-end foreach
Gotemplate (Slice)
#
{{- range $index, $value := .goList }}
    {{ $index }}, {{ $value }}, {{ extract $.goList $index }}
{{- end }}
Result (Slice)
#
    0, test0, test0
    1, test1, test1
    2, test2, test2
    3, test3, test3
    4, test4, test4