From: Rob Pike funcs and the like:
 
-func CopyInBackground(src, dst chan Item) {
+func CopyInBackground(dst, src chan Item) {
     go func() { for { dst <- <-src } }()
 }
 
@@ -385,7 +385,7 @@ case a > b:
 
 
 -The grammar admits an empty statement after any statement list, which +The grammar accepts an empty statement after any statement list, which means a terminal semicolon is always OK. As a result, it's fine to put semicolons everywhere you'd put them in a C programâthey would be fine after those return statements, @@ -480,6 +480,59 @@ codeUsing(f, d); +
+The Go for loop is similar toâbut not the same asâC's.
+It unifies for
+and while and there is no do-while.
+There are three forms, only one of which has semicolons:
+
+// Like a C for:
+for init; condition; post { }
+
+// Like a C while:
+for condition { }
+
+// Like a C for(;;)
+for { }
+
+
++Short declarations make it easy to declare the index variable right in the loop: +
+
+sum := 0;
+for i := 0; i < 10; i++ {
+    sum += i
+}
+
+
+
+If you're looping over an array, slice, string, or map a range clause can set
+it all up for you:
+
+var m map[string] int;
+sum := 0;
+for key, value := range m {  // key is unused; could call it '_'
+    sum += value
+}
+
+
+
+Finally, since Go has no comma operator and ++ and --
+are statements not expressions, if you want to run multiple variables in a for
+you can use parallel assignment:
+
+// Reverse a
+for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 {
+	a[i], a[j] = a[j], a[i]
+}
+
+
 @@ -546,6 +599,9 @@ func Compare(a, b []byte) int { } +