56 lines
884 B
Go
56 lines
884 B
Go
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 = fmt.Sprintf("%s%c", s, 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() {
|
|
}
|