anchor.diff:  This is a rather common scenario when you are refactoring or trying something.
   The compiler could just warn and skip unused declarations.
   
  +To skip a useless import, one can write (notice the underscore):
  +[source,go]
  +----
  +import _ "fmt"
  +----
  +
   Using an IDE (like Jetbrains Gogland) with an intelligent coding assistant
   which would fix automatically imports may help.
  +I also found the https://godoc.org/golang.org/x/tools/cmd/goimports[goimports] command line tool,
  +but I didn't try it.
   
   == The odd
   
  
positive.code: * *Analyze* code and detect suspicious constructs.
  * *Search and Read* the base API documentation while being offline.
  
  
  
  === Switch, case, fallthrough
  
  
negative.code: 
  === Concurrency with channels and routines
  
  First of all, *channels* is a concept used for inter-thread communications.
  There are 2 types of channels:
  
  * *Sync channels* are similar to Java's `SynchronousQueue` ,
  the producer for the consumer to be ready:
  +
  [source,go]
  ----
  ch := make(chan string)
  ----
  * *Async channels*: are similar to Java's `ArrayBlockingQueue` ,
  the producer waits for a free location to place data,
  while the consumer waits for a place filled with data:
  +
  [source,go]
  ----
  ch := make(chan string, 10)
  ----
  
  Goroutines are lightweight threads:
  [source,go]
  ----
  go doit() // <1>
  ----
  <1> The `doit` function is ran in background
  
  [source,go]
  ----
  include::{source_dir}/demo/concurrency.go[tags=main]
  ----
  <1> Generate and append data in the channel
  <2> Pull data from the channel and process it
  <3> Run the `multiply` function in a background thread
  <4> Run the `generate` function in the main thread.
     I could have placed it in a separate thread as well.
  
  == The bad
  
  