1 package main
2
3
4
5
6
7 import "fmt"
8
9 func f() {
10 s := "AB"
11 for range 5 {
12 s += s
13 }
14 if s != "ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB" {
15 panic(s)
16 }
17
18 var t []int
19 for i := range 10 {
20 t = append(t, i)
21 }
22 if got, want := fmt.Sprint(t), "[0 1 2 3 4 5 6 7 8 9]"; got != want {
23 panic(got)
24 }
25
26 var u []uint
27 for i := range uint(3) {
28 u = append(u, i)
29 }
30 if got, want := fmt.Sprint(u), "[0 1 2]"; got != want {
31 panic(got)
32 }
33
34 for i := range 0 {
35 panic(i)
36 }
37
38 for i := range int(-1) {
39 panic(i)
40 }
41
42 for _, test := range []struct {
43 x int
44 b, c bool
45 want string
46 }{
47 {-1, false, false, "[-123 -123]"},
48 {0, false, false, "[-123 -123]"},
49 {1, false, false, "[-123 0 333 333]"},
50 {2, false, false, "[-123 0 333 1 333 333]"},
51 {2, false, true, "[-123 0 222 1 222 222]"},
52 {2, true, false, "[-123 0 111 111]"},
53 {3, false, false, "[-123 0 333 1 333 2 333 333]"},
54 } {
55 got := fmt.Sprint(valueSequence(test.x, test.b, test.c))
56 if got != test.want {
57 panic(fmt.Sprint(test, got))
58 }
59 }
60 }
61
62
63
64 func valueSequence(x int, b, c bool) []int {
65 var vals []int
66 var i int = -123
67 vals = append(vals, i)
68 for i = range x {
69 vals = append(vals, i)
70 if b {
71 i = 111
72 vals = append(vals, i)
73 break
74 } else if c {
75 i = 222
76 vals = append(vals, i)
77 continue
78 }
79 i = 333
80 vals = append(vals, i)
81 }
82 vals = append(vals, i)
83 return vals
84 }
85
86 func main() { f() }
87
View as plain text