Good sources, organized in a logical sequence (simpler to more complex)
- The Go Programming Language and Environment: Written by the creators of Go, it explains the principles and design decisions that went into creating Go and its environment. Read this first to understand the motivation behind language features, tools, and environment.
- A Tour of Go: Learn the important language features in bite-sized explanations. Part of the official documentation.
- How to Write Go Code: Write a simple Go program to learn the environment and tools. Part of the official documentation. The program is simple. The goal is to teach the mechanics of getting a Go program to run.
- Learn Go in ten minutes: Now that we are familiar with the language we can use this page as a quick reminder of the Go syntax and features.
- Google's Go styleguide: Good styleguides are not only about style. Concentrate on the "best practices" section to learn "patterns that have evolved over time that solve common problems, read well, and are robust to code maintenance needs."
- The Go Programming Language book: Despite the language and standard library changes since it was written in 2015, in the words of a reader, "It's light on syntax and deep on motivation, problem-solving the Go way. It really gives you the Go mindset".
Where to go from here:
- Go Learn: Official site for tutorials, guided journeys, and other learnig resources.
- Go FAQ.
- Awesome Go: A curated list of awesome Go frameworks, libraries, and software.
- Concurreny patterns: "Go supports concurrency in the language and runtime, not a library".
- gophercises: "[B]uild roughly 20 different mini-applications, packages, and tools that are each designed to teach you something different" (free, but requires email signup).
- Effective Go: Looked promising but has this warning: "This document was written for Go's release in 2009, and has not been updated significantly since. ... There are no plans to update it, as so much has happened and a large and growing set of documents, blogs, and books do a fine job of describing modern Go usage. Effective Go continues to be useful, but the reader should understand it is far from a complete guide."
- What to read instead: Don't know yet. Perhaps the book claiming the same title?