| // run | |
| // Copyright 2009 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| // Test 'for range' on arrays, slices, and maps. | |
| package main | |
| const size = 16 | |
| var a [size]byte | |
| var p []byte | |
| var m map[int]byte | |
| func f(k int) byte { | |
| return byte(k * 10007 % size) | |
| } | |
| func init() { | |
| p = make([]byte, size) | |
| m = make(map[int]byte) | |
| for k := 0; k < size; k++ { | |
| v := f(k) | |
| a[k] = v | |
| p[k] = v | |
| m[k] = v | |
| } | |
| } | |
| func main() { | |
| var i int | |
| /* | |
| * key only | |
| */ | |
| i = 0 | |
| for k := range a { | |
| v := a[k] | |
| if v != f(k) { | |
| println("key array range", k, v, a[k]) | |
| panic("fail") | |
| } | |
| i++ | |
| } | |
| if i != size { | |
| println("key array size", i) | |
| panic("fail") | |
| } | |
| i = 0 | |
| for k := range p { | |
| v := p[k] | |
| if v != f(k) { | |
| println("key pointer range", k, v, p[k]) | |
| panic("fail") | |
| } | |
| i++ | |
| } | |
| if i != size { | |
| println("key pointer size", i) | |
| panic("fail") | |
| } | |
| i = 0 | |
| for k := range m { | |
| v := m[k] | |
| if v != f(k) { | |
| println("key map range", k, v, m[k]) | |
| panic("fail") | |
| } | |
| i++ | |
| } | |
| if i != size { | |
| println("key map size", i) | |
| panic("fail") | |
| } | |
| /* | |
| * key,value | |
| */ | |
| i = 0 | |
| for k, v := range a { | |
| if v != f(k) { | |
| println("key:value array range", k, v, a[k]) | |
| panic("fail") | |
| } | |
| i++ | |
| } | |
| if i != size { | |
| println("key:value array size", i) | |
| panic("fail") | |
| } | |
| i = 0 | |
| for k, v := range p { | |
| if v != f(k) { | |
| println("key:value pointer range", k, v, p[k]) | |
| panic("fail") | |
| } | |
| i++ | |
| } | |
| if i != size { | |
| println("key:value pointer size", i) | |
| panic("fail") | |
| } | |
| i = 0 | |
| for k, v := range m { | |
| if v != f(k) { | |
| println("key:value map range", k, v, m[k]) | |
| panic("fail") | |
| } | |
| i++ | |
| } | |
| if i != size { | |
| println("key:value map size", i) | |
| panic("fail") | |
| } | |
| } |