This file lists topics that already exist (prefixed by *) and topics that
should be added (prefixed by -). It should be kept up-to-date with tour.article.

* Hello, 世界
* Go local
* Packages
* Imports
- "Imported but not used" errors (later perhaps)
* Exported names
* Functions
* Functions continued
* Multiple results
* Named results
- Variables (single declaration first)
* Variables
* Variables with initializers
* Short variable declarations
* Basic types
* Type inference
* Type conversions
* Zero values
* Constants
* Numeric Constants
* For
* For continued
* For is Go's "while"
* Forever
* If
* If with a short statement
* If and else
* Exercise: Loops and Functions
* Structs
* Struct Fields
* Pointers
* Struct Literals
* The new function
* Arrays
* Slices
* Slicing slices
* Making slices
* Append
- Copy
* Nil slices
* Range
* Range continued
- The blank identifier
* Exercise: Slices
* Maps
* Map literals
* Map literals continued
* Mutating Maps
- Maps and range
* Exercise: Maps
* Function values
* Function closures
* Exercise: Fibonacci closure
* Switch
* Switch evaluation order
* Switch with no condition
- Complex numbers
* Advanced Exercise: Complex cube roots
* Methods and Interfaces
* Methods
* Methods continued
* Methods with pointer receivers
* Interfaces
* Interfaces are satisfied implicitly
- Interface assignment
- Empty interface
* Errors
* Exercise: Errors
* Web servers
* Exercise: HTTP Handlers
* Images
* Exercise: Images
* Exercise: Rot13 Reader
- Sort (see sort package examples)
- Exercise: Sort
- Embedding
- Exercise: Embedding (sort by different fields)
- Type assertion
- Type switch
- Exercise: Visitor (walk a tree?)
* Concurrency
* Goroutines
* Channels
* Buffered Channels
* Range and Close
* Select
* Default Selection
* Exercise: Equivalent Binary Trees
* Exercise: Equivalent Binary Trees
* Exercise: Web Crawler
- More language features
* Defer
- Panic and recover
- init functions
- Tools
- Godoc
- Gofmt
* Where to Go from here...

