// $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"; // } }