1
2
3
4
5 package main
6
7 import (
8 "fmt"
9 "os"
10 )
11
12 type I int
13
14 func (x *I) method() int {
15 return int(*x)
16 }
17
18 func main() {
19 sum := 0
20 var is []func() int
21 for i := I(0); int(i) < 10; i++ {
22 for j := 0; j < 10; j++ {
23 if int(i) == j {
24 continue
25 }
26 sum++
27 }
28 if i&1 == 0 {
29 is = append(is, i.method)
30 }
31 }
32
33 bug := false
34 if sum != 100-10 {
35 fmt.Printf("wrong sum, expected %d, saw %d\n", 90, sum)
36 bug = true
37 }
38 sum = 0
39 for _, m := range is {
40 sum += m()
41 }
42 if sum != 2+4+6+8 {
43 fmt.Printf("wrong sum, expected %d, saw %d\n", 20, sum)
44 bug = true
45 }
46 if !bug {
47 fmt.Printf("PASS\n")
48 } else {
49 os.Exit(11)
50 }
51 }
52
View as plain text