Skip to content

Instantly share code, notes, and snippets.

@cgarbin
Last active June 11, 2023 15:40
Show Gist options
  • Save cgarbin/c9145972cb8e0ddf12f2f017abb228f9 to your computer and use it in GitHub Desktop.
Save cgarbin/c9145972cb8e0ddf12f2f017abb228f9 to your computer and use it in GitHub Desktop.
Learning Go

Learning Go

Good sources, organized in a logical sequence (simpler to more complex)

  1. 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.
  2. A Tour of Go: Learn the important language features in bite-sized explanations. Part of the official documentation.
  3. 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.
  4. 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.
  5. 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."
  6. 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:

  1. Go Learn: Official site for tutorials, guided journeys, and other learnig resources.

Other useful references

  1. Go FAQ.
  2. Awesome Go: A curated list of awesome Go frameworks, libraries, and software.
  3. Concurreny patterns: "Go supports concurrency in the language and runtime, not a library".
  4. 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).

Things that looked good at first glance but weren't

  1. 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."
    1. What to read instead: Don't know yet. Perhaps the book claiming the same title?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment