// $G $F.go && $L $F.$A && ./$A.out // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main var a,b,c,d,e,f,g,h,i int; func printit() { print(a,b,c,d,e,f,g,h,i,"\n"); } func testit() bool { if a+b+c+d+e+f+g+h+i != 45 { print("sum does not add to 45\n"); printit(); panic(); } return a == 1 && b == 2 && c == 3 && d == 4 && e == 5 && f == 6 && g == 7 && h == 8 && i == 9; } func swap(x, y int) (u, v int) { return y, x } func main() { a = 1; b = 2; c = 3; d = 4; e = 5; f = 6; g = 7; h = 8; i = 9; if !testit() { panic("init val\n"); } for z:=0; z<100; z++ { a,b,c,d, e,f,g,h,i = b,c,d,a, i,e,f,g,h; if testit() { if z == 19 { break; } print("on ", z, "th iteration\n"); printit(); panic(); } } if !testit() { print("final val\n"); printit(); panic(); } a, b = swap(1, 2); if a != 2 || b != 1 { panic("bad swap"); } //BUG a, b = swap(swap(a, b)); // if a != 2 || b != 1 { // panic("bad swap"); // } }