| package main |
| |
| // Test of initialization order of package-level vars. |
| |
| var counter int |
| |
| func next() int { |
| c := counter |
| counter++ |
| return c |
| } |
| |
| func makeOrder1() [6]int { |
| return [6]int{f1, b1, d1, e1, c1, a1} |
| } |
| |
| func makeOrder2() [6]int { |
| return [6]int{f2, b2, d2, e2, c2, a2} |
| } |
| |
| var order1 = makeOrder1() |
| |
| func main() { |
| // order1 is a package-level variable |
| if order1 != [6]int{5, 1, 3, 4, 2, 0} { |
| panic(order1) |
| } |
| |
| // order2 is a local variable |
| var order2 = makeOrder2() |
| if order2 != [6]int{11, 7, 9, 10, 8, 6} { |
| panic(order2) |
| } |
| } |
| |
| var a1, b1 = next(), next() |
| var c1, d1 = next(), next() |
| var e1, f1 = next(), next() |
| |
| var a2, b2 = next(), next() |
| var c2, d2 = next(), next() |
| var e2, f2 = next(), next() |