| package main | |
| // Tests of range loops. | |
| import "fmt" | |
| // Range over string. | |
| func init() { | |
| if x := len("Hello, 世界"); x != 13 { // bytes | |
| panic(x) | |
| } | |
| var indices []int | |
| var runes []rune | |
| for i, r := range "Hello, 世界" { | |
| runes = append(runes, r) | |
| indices = append(indices, i) | |
| } | |
| if x := fmt.Sprint(runes); x != "[72 101 108 108 111 44 32 19990 30028]" { | |
| panic(x) | |
| } | |
| if x := fmt.Sprint(indices); x != "[0 1 2 3 4 5 6 7 10]" { | |
| panic(x) | |
| } | |
| s := "" | |
| for _, r := range runes { | |
| s += string(r) | |
| } | |
| if s != "Hello, 世界" { | |
| panic(s) | |
| } | |
| var x int | |
| for range "Hello, 世界" { | |
| x++ | |
| } | |
| if x != len(indices) { | |
| panic(x) | |
| } | |
| } | |
| // Regression test for range of pointer to named array type. | |
| func init() { | |
| type intarr [3]int | |
| ia := intarr{1, 2, 3} | |
| var count int | |
| for _, x := range &ia { | |
| count += x | |
| } | |
| if count != 6 { | |
| panic(count) | |
| } | |
| } | |
| func main() { | |
| } |