Solid readable introduction to the Go programming language, from a practical perspective.
The book assumes that you know how to program, so it doesn't need to teach you how to do basic tasks or explain the elementary concepts of what a variable it is. It instead assumes that you are somewhat proficient practitioner of some standard-ish programming language and want to learn how to use Go as a tool. Thus it focus heavily on the practicalities of the language, its tooling, and how to write idiomatic code that will be maintainable.
When theory or more more academic discussions help justify or elucidate the text they appear, but unlike some texts on programming, it isn't like 90% theoretical discourse with no practical examples.
Overall I think the writing is solid, and I did most of the end of chapter exercises, since they were relatively short and focused on reinforcing the concepts introduced, instead of being like a selection of problems for university course to be graded on.
My one major complaint, which moved this book from 5 to 4 stars for me, is that in some the later chapters, the ones of the standard library, contexts, etc, the text shifts from using somewhat contrived, but universal examples that don't really require external domain knowledge to really hitting on writing a web server server with Go, and assuming a lot of knowledge about how HTTP requests work and are handled.
I understand that this is a very good example for demonstrating a lot of Go's features, and realistically why many of them exist, but though I have a cursory knowledge of how HTTP works, I have never written an web server, nor do I have a particular interest in learning how one would to understand examples in a learn-a-language book.
My interest in Go comes from needing to maintain and expand an existing codebase of DevOps tooling that is written in Go (instead of something like Python), so my time would have been better spent on chapters getting into like the details of best practices for command line parsing, or working with external processes or file systems.
It was just kinda disappointing for the first 2/3s of the book to be broadly generally applicable to pivoting to some pretty domain specific examples, or more to the point discussing potentially general features in very domain specific terms. Like I have seen the use of contexts in non-web server code for passing around program state, it would have been nice to have the usage presented without the web server context baked into it.
I would have preferred to have some of these later chapters broken up into a language feature discussion, and then a more worked out example using domain specific terminology, so that as a reader it was more clear what was skippable for my situation. The frustration for me I think came from skimming these chapters and seeing that later on in them there was potentially useful information, so I needed to rewind, and read for context and make sure I didn't miss other relevant bits. Whereas earlier on it was more just a straight read everything approach.