Join the thriving community of skilled Go developers!
Go Faster is a book for those wanting to learn the Golang programming language. Though many great books have been published on this subject with the same aim, Go Faster takes a slightly different approach.
For starters, it recognises that Go is a relatively simple language with just 25 keywords and that most developers do not struggle to learn its limited syntax.
It acknowledges that most readers will be able to set up a Golang development environment using one of the operating system-specific binaries, without needing detailed instruction.
It recognises that most readers will have a basic level of programming knowledge already - possibly even prior experience with Go - but that that knowledge may differ, depending on their route into programming and the languages they have used.
The examples in Go Faster are simple by design. There are no real-world or useful applications, instead, all the non-essential code is stripped away to help the user see the principles being demonstrated and grasp the concepts.
Go Faster is designed to assist developers coming from object-oriented programming. It elaborates in areas which can confuse since the Go programming paradigm is different than that of OOP. And like Go itself, Go Faster is opinionated with its semantics.
The book also covers features which are relatively new to the language. Features that many developers, even experienced ones, may not yet be familiar with, and many existing texts may not yet explore, such as Generics and Workspaces.
Finally, Go Faster reflects the author's own journey learning Go & is laid out accordingly. Not as an A-to-Z style reference, but in a way that should enable understanding earlier, laying solid building blocks on which the reader can progress.
If the author was learning Go again, this is the way they would structure their learning path, & hopefully, it is this structure which helps users at all levels gain a solid understandin
AI Reading Assistant
Whole-book reading guide from stratified index samples; jump to passages in the text
Tip the Site
Support this siteYour recognition and a small knowledge-service contribution help keep this technical work open source.Scan the WeChat Pay or Alipay code below. Logged-in and guest visitors can both tip.
WeChat Pay
Alipay
Open WeChat or Alipay and scan. No login required.
AI guide
【One-Line Pitch】
A pragmatic, OOP-friendly introduction to Go that skips the basics you already know and focuses on the paradigm shifts, new features like Generics and Workspaces, and the mental models that make Go code readable and idiomatic — ideal for experienced developers (especially from Java/C#/Python) who want to get productive fast.
【Book Arc】
- **Opening (~0%–9%)**: Sets the book's philosophy — Go is simple (25 keywords), so the real challenge is unlearning OOP habits. Introduces the "values, not objects" mindset, exported/unexported visibility (replacing public/private), and the importance of treating errors as values rather than exceptions.
- **Early (~9%–25%)**: Covers the Go toolchain and project setup: the CLI (go env, go mod), documentation via Godoc (including executable examples), and project organization — the special `internal` folder for hiding packages, the `cmd` folder for multiple executables, and best practices for structuring code outside GOPATH.
- **Early–Middle (~25%–38%)**: Deep dive into dependency management: modules (go.mod/go.sum), the shift from GOPATH, vendoring, and the newer Workspaces feature (Go 1.18) for multi-module projects. Then moves to variables and constants — declaration styles, the `:=` shorthand, `iota` for constant sequences, and the compiler's strictness on unused variables.
- **Middle (~38%–47%)**: Explores variable semantics (pointers vs. values), the three ways to get a pointer (`&`, `new`, `make`), and data types — including the gotcha of floating-point precision in comparisons, booleans, strings as byte slices, and aggregate types (arrays with fixed length as part of their type).
- **Late (~47%–60%+)**: Continues into more advanced territory per the table of contents: control structures, error handling, logging, functions, memory management, receivers, interfaces, type assertion/reflection, and Generics — followed by concurrency (goroutines, context, waitgroups, mutexes, channels) and quality assurance (testing and benchmarking).
【Key Takeaways】
- **Unlearn OOP, embrace values** (Early): Go has no classes or objects — think in terms of types, values, and receivers. Errors are just values to check, not exceptions to throw; this verbosity improves readability. (Early)
- **Visibility is about capitalization, not keywords** (Early): Uppercase first letter = exported (public), lowercase = unexported (private). This applies to variables, functions, types, and struct fields — a simple rule that replaces the public/private paradigm entirely.
- **The toolchain is your friend** (Early): Godoc can turn code examples into interactive, runnable programs on the Go Playground — and these examples are actually tests (using `Example` prefix and `// Output:` comments), so documentation stays verified.
- **Project structure has one special rule** (Early): The `internal` folder restricts package access to shared ancestors — perfect for hiding code you don't want to expose as a public API. Use `cmd` for multiple executables sharing common code.
- **Modules and Workspaces changed everything** (Early–Middle): Since Go 1.13, modules (go.mod) let you organize projects anywhere, not just GOPATH. Workspaces (Go 1.18) handle multi-module development. go.sum locks dependency versions via checksums — never edit it manually.
- **Pointers have three creation paths** (Middle): `&` for direct address-taking, `new` for zeroed structs, and `make` for reference types (slices, maps, channels). Understanding when to pass values vs. pointers is core to avoiding common mistakes.
- **Floating-point comparisons are treacherous** (Middle): Two seemingly equal float64 values can fail `==` due to rounding precision. Always convert to the same precision explicitly, especially in unit test assertions.
- **Arrays are rigid, strings are slices** (Middle): Array length is part of its type (`[5]int` ≠ `[6]int`), and strings point to backing byte slices — so slicing a string (e.g., `myString[6:]`) is really byte manipulation.
【Reading Tips】
- **Skim the early chapters if you're already comfortable with Go basics** — the book assumes you can set up an environment and know programming fundamentals. Focus on the paradigm-shift sections (visibility, errors as values) rather than syntax.
- **Deep-read the dependency management and project organization chapters** — these cover modern practices (modules, workspaces, internal folder) that many older Go books miss, and they're critical for real-world projects.
- **Pay special attention to the pointer/value semantics section** — it's flagged as core to avoiding common mistakes. Work through the examples with the Go Playground links to internalize when to use `&`, `new`, and `make`.
- **Use the Godoc interactive examples as a learning tool** — run and edit them on the Playground to test your understanding of the standard library, rather than just reading the code.
- **Don't skip the QA chapter** — testing and benchmarking are covered late but are essential for writing production-quality Go, and the book ties them back to earlier concepts like floating-point precision.
【Coverage Limits】
This guide synthesizes the book's philosophy, toolchain, project structure, dependency management, and core data/variable concepts from the excerpts. The later chapters on concurrency, generics, and testing are mapped from the table of contents but not detailed here — the excerpts do not cover their full content.
Page 8
ng solid building blocks on which the reader can progress. If the author was learning Go again, this is the way they would structure their learning path, & ...
of the generated documentation. These appear as text “code” and “output” sections in the documentation. However, if you run Godoc with the -play option, any
.mod file for a module which has no dependencies outside of the standard library. 1 module github.com/golangatspeed/pkg/sideeffect 2 3 go 1.13 Chapter 5 - De...
type, a string actually points to a backing slice of bytes. We cover the byte type next but think of a slice as an array for the moment, we’ll also cover the...
we do not check for the existence of a key, and our program receives valid data for a map key which does not exist: Example 41 - Unsafe map access 1 package ...
old how to respond to every input and outcome. We call this flow control and we may employ three forms of control structure logic in our programs to facilita...
d to customize the format of log messages to suit any need. Chapter 9 - Digging deeper 119 1 Single Argument 2 Hello Joe Bloggs! 3 Addresses: 4 1: Address 1
text editors with code completion, it will form part of the same prompt API as it is bound to the same customer type. Finally, a few suggested style rules wh...
Support this siteYour recognition and a small knowledge-service contribution help keep this technical work open source.
Scan the WeChat Pay or Alipay code below. Logged-in and guest visitors can both tip.
WeChat PayAlipay
Open WeChat or Alipay and scan. No login required.
Add Tag
Enter tag name (max 50 characters)
Share E-Book
Go Faster (Ollie Phillips)(Z-Library)
Scan QR code with your phone to access
Copy the link or scan the QR code to access this e-book on your phone
Share E-Book via Email
Please enter email address
Donation Statistics
¥.00
Total Donations
0
Donation Count
Go Faster (Ollie Phillips)(Z-Library)
Find Your Favorite Books
Only registered users can comment after logging in. Comments need to be reviewed by administrators before being displayed
Loading comments...
Reply to Comment
Edit Comment