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
* Exported names
* Functions
* Functions continued
* Multiple results
* Named results
- Variables (single declaration first)
* Variables
* Variables with initializers
* Short variable declarations
* Basic types
* Type conversions
- The zero value
* 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...

