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() { }