go-tour: add a slide on append

LGTM=adg
R=adg, campoy
CC=golang-codereviews
https://golang.org/cl/114760044
diff --git a/content/moretypes.article b/content/moretypes.article
index 7d717f5..579130f 100644
--- a/content/moretypes.article
+++ b/content/moretypes.article
@@ -113,9 +113,29 @@
 
 A nil slice has a length and capacity of 0.
 
+.play prog/tour/nil-slices.go
+
+* Adding elements to a slice
+
+It is common to append new elements to a slice, and so Go provides a built-in
+`append` function. The [[http://golang.org/pkg/builtin/#append][documentation]]
+of the built-in package describes `append`.
+
+	func append(s []T, vs ...T) []T
+
+The first parameter `s` of `append` is a slice of type `T`, and the rest are
+`T` values to append to the slice.
+
+The resulting value of `append` is a slice containing all the elements of the
+original slice plus the provided values.
+
+If the backing array of `s` is too small to fit all the given values a bigger
+array will be allocated. The returned slice will point to the newly allocated
+array.
+
 (To learn more about slices, read the [[http://golang.org/doc/articles/slices_usage_and_internals.html][Slices: usage and internals]] article.)
 
-.play prog/tour/nil-slices.go
+.play prog/tour/append.go
 
 * Range
 
diff --git a/content/prog/tour/append.go b/content/prog/tour/append.go
new file mode 100644
index 0000000..f68e4f8
--- /dev/null
+++ b/content/prog/tour/append.go
@@ -0,0 +1,25 @@
+package main
+
+import "fmt"
+
+func main() {
+	var a []int
+	printSlice("a", a)
+
+	// append works on nil slices.
+	a = append(a, 0)
+	printSlice("a", a)
+
+	// the slice grows as needed.
+	a = append(a, 1)
+	printSlice("a", a)
+
+	// we can add more than one element at a time.
+	a = append(a, 2, 3, 4)
+	printSlice("a", a)
+}
+
+func printSlice(s string, x []int) {
+	fmt.Printf("%s len=%d cap=%d %v\n",
+		s, len(x), cap(x), x)
+}