In addition to the resources available [at golang.org](http://golang.org/doc/#learning) there are a range of community-driven initiatives:

  * [Go By Example](http://gobyexample.com/) provides a series of annotated code snippets.
  * [Learn Go in Y minutes](http://learnxinyminutes.com/docs/go/) is a top-to-bottom walkthrough of the language.
  * [Free Go Language Workshop](https://www.frameworktraining.co.uk/go-language-free-training-workshop/) Framework Training is running regular free BYOD workshops in London, UK

Learning resources for specific topics:
  * [LearnConcurrency](LearnConcurrency) outlines a course of study of Go's concurrency model and patterns.
  * [LearnErrorHandling](LearnErrorHandling) links to resources about error handling in Go.
  * [LearnTesting](LearnTesting) links to resources about testing in Go.
  * [LearnServerProgramming](LearnServerProgramming) links to resources about server programming in Go.
