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