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

  * [The Little Go Book](http://openmymind.net/The-Little-Go-Book/)
  * [Exercism.io - Go](http://exercism.io/languages/go) - Online code exercises for Go for practice and mentorship.
  * [Learn Go in an Hour - Video](https://www.youtube.com/watch?v=CF9S4QZuV30) _2015-02-15_
  * [Learning to Program in Go](https://www.youtube.com/playlist?list=PLei96ZX_m9sVSEXWwZi8uwd2vqCpEm4m6), a multi-part video training class.
  * [Pluralsight Classes for Go](http://www.pluralsight.com/tag/golang) - A growing collection of (paid) online classes.
  * [Ardan Labs Training](https://www.ardanlabs.com/) - Commercial, live instruction for Go programming.
  * [O'Reilly Go Fundamentals](http://shop.oreilly.com/category/learning-path/go-fundamentals.do) - Video learning path for Go programming.
  * [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 walk-through of the language.
  * [Workshop-Go](https://github.com/sendwithus/workshop-go) - Startup Slam Go Workshop - examples and slides.
  * [Go Fragments](http://www.gofragments.net/) - A collection of annotated Go code examples.
  * [50 Shades of Go: Traps, Gotchas, Common Mistakes for New Golang Devs](http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html)
  * [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
  * [GoingGo.net](http://www.goinggo.net/) - A collection of videos and articles for learning Go.
  * [Golang Tutorials](http://golangtutorials.blogspot.com/2011/05/table-of-contents.html) - A free online class.
  * [Golang for beginners](http://golanguz.blogspot.com) - Tons of go code for beginners.
  * Rob Pike's 2011 three day course - [Day 1](http://go.googlecode.com/hg-history/release-branch.r60/doc/GoCourseDay1.pdf), [Day 2](http://go.googlecode.com/hg-history/release-branch.r60/doc/GoCourseDay2.pdf), [Day 3](http://go.googlecode.com/hg-history/release-branch.r60/doc/GoCourseDay3.pdf) (*links are broken*, use the archived links from the wayback machine. [Day 1][wbday1], [Day 2][wbday2], [Day 3][wbday3])
  * [The Go Bridge Foundry](https://github.com/gobridge) - A member of the [Bridge Foundry](http://bridgefoundry.org/) family, offering a complete set of free Go training materials with the goal of bringing Go to under-served communities.

[wbday1]: http://web.archive.org/web/20160305024536/http://go.googlecode.com/hg-history/release-branch.r60/doc/GoCourseDay1.pdf
[wbday2]: http://web.archive.org/web/20160305081012/http://go.googlecode.com/hg-history/release-branch.r60/doc/GoCourseDay2.pdf
[wbday3]: http://web.archive.org/web/20160305075151/http://go.googlecode.com/hg-history/release-branch.r60/doc/GoCourseDay3.pdf

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.

Further reading:
  * [Newspaper](http://www.newspaper.io) is a topic based newsfeed for slack. Built on Go
