Associative array/Iteration: Difference between revisions
Content added Content deleted
(→{{header|Go}}: add template example) |
|||
Line 1,113: | Line 1,113: | ||
=={{header|Go}}== |
=={{header|Go}}== |
||
'''Language:''' |
|||
<lang go>myMap := map[string]int { |
<lang go>myMap := map[string]int { |
||
"hello": 13, |
"hello": 13, |
||
Line 1,132: | Line 1,133: | ||
fmt.Printf("value = %d\n", value) |
fmt.Printf("value = %d\n", value) |
||
}</lang> |
}</lang> |
||
'''Standard library templates:''' |
|||
In addition to the for/range features of the language, the text/template and html/template packages of the standard library have map iteration features. Some differences worth noting: |
|||
* A single assigned value in a template is the map value. With the language for/range it is the key. |
|||
* Templates have no equivalent of _; a dummy variable must be used. |
|||
* In a template, if map keys are a comparable basic type, then iteration proceeds in key order. With the language for/range, iteration is in non-deterministic order. |
|||
<lang go>package main |
|||
import ( |
|||
"os" |
|||
"text/template" |
|||
) |
|||
func main() { |
|||
m := map[string]int{ |
|||
"hello": 13, |
|||
"world": 31, |
|||
"!": 71, |
|||
} |
|||
// iterating over key-value pairs: |
|||
template.Must(template.New("").Parse(` |
|||
{{- range $k, $v := . -}} |
|||
key = {{$k}}, value = {{$v}} |
|||
{{end -}} |
|||
`)).Execute(os.Stdout, m) |
|||
// iterating over keys: |
|||
template.Must(template.New("").Parse(` |
|||
{{- range $k, $v := . -}} |
|||
key = {{$k}} |
|||
{{end -}} |
|||
`)).Execute(os.Stdout, m) |
|||
// iterating over values: |
|||
template.Must(template.New("").Parse(` |
|||
{{- range . -}} |
|||
value = {{.}} |
|||
{{end -}} |
|||
`)).Execute(os.Stdout, m) |
|||
}</lang> |
|||
{{out}} |
|||
Note order by key. |
|||
<pre> |
|||
key = !, value = 71 |
|||
key = hello, value = 13 |
|||
key = world, value = 31 |
|||
key = ! |
|||
key = hello |
|||
key = world |
|||
value = 71 |
|||
value = 13 |
|||
value = 31 |
|||
</pre> |
|||
=={{header|Groovy}}== |
=={{header|Groovy}}== |