Master Go language fundamentals, learn how to structure Go projects effectively, and deliver high-performance code using Go’s powerful concurrency model.
In Go in Action, Second Edition you will learn:
Go language fundamentals
How to set up and structure a Go software project
Working with the Go type system
Concurrency in Go
Go’s unique approach to error handling
Writing and capturing errors in your own software
How to use Go’s built-in testing and observability features
Go in Action, Second Edition has been fully updated to cover all the new features and idioms of the latest version of Go. In it, you’ll dive into Go's unique features and quickly get started writing real-world applications, such as websites and network servers.
about the reader
For programmers proficient in at least one OO programming language.
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 hands-on guide that takes experienced programmers from Go's core syntax to real-world applications, with a strong emphasis on the type system, concurrency, and idiomatic project structure. Best suited for developers fluent in another object-oriented language who want to write production-grade Go quickly.
【Book Arc】
- **Opening (~0%–10%)**: Makes the case for Go as a bridge between fast-but-tedious languages (C/C++) and quick-but-slow ones (Ruby/Python), then walks through toolchain setup and the modern Go Modules workflow that replaced GOPATH.
- **Early (~10%–30%)**: Builds a complete word-counting program from scratch, teaching short variable declarations, scope and shadowing, comments, command-line arguments, and the `io` interface family (Reader, Writer, Seeker, Closer) along the way.
- **Early–Middle (~30%–48%)**: Dives into the type system — integer and floating-point literals, arithmetic and bitwise operators, structs, strings and runes, then arrays with their fixed-size semantics and `range` iteration.
- **Middle (~48%–60%)**: Moves into slices and slice expressions, showing how to pass subsets of data to functions and why slices are the idiomatic dynamic collection in Go.
- **Late (~60%+)**: Excerpts do not cover the later chapters in detail, but the book's stated scope includes concurrency (goroutines and channels), error handling, testing, and observability.
- **Ending**: Excerpts do not cover the closing chapters; the blurb indicates the book culminates in building real-world applications such as websites and network servers.
【Key Takeaways】
- **Go trades feature count for clarity** (Opening): Few keywords, a concise syntax, and a type system built on composition rather than rigid inheritance — the language is defined as much by what it omits as what it includes.
- **Fast compilation and built-in concurrency are the headline wins** (Opening): The compiler is fast enough to feel invisible, and goroutines plus channels let software scale without third-party threading libraries.
- **Go Modules replaced the old GOPATH workflow** (Early): `go mod init` creates a `go.mod` file with module and go directives, and the package/checksum databases make dependency disappearance unlikely — a major improvement over the gb/glide/dep era.
- **Shadowing is a subtle, common bug source** (Early): A short declaration inside an `if` block creates a new variable rather than assigning the outer one; many editors warn about this, so heed them.
- **The `io` interfaces are the connective tissue of Go I/O** (Early): Reader, Writer, Seeker, Closer, and their combinations establish conventions that let your own types plug into the standard library's I/O machinery.
- **Always check slice length before indexing** (Early): The book stresses `len` checks before accessing arbitrary elements — a small habit that prevents panics.
- **Arrays are fixed and value-copied; slices are the flexible workhorse** (Middle): Arrays cannot change length or element type after declaration, and `range` yields copies, so modifying loop values does not affect the original.
- **Floating-point types force an explicit choice** (Early): There is no architecture-dependent `float`; you must pick `float32` or `float64` because bit size matters for precision.
【Reading Tips】
- **Deep-read the early chapters** (~10%–30%) even if you know another language — the word-count program is where Go's idioms (short declarations, interfaces, error returns) click into place.
- **Skim the literal and operator tables** in the type-system chapter if you already know C-family syntax; focus instead on Go-specific quirks like `&^`, no plain `float`, and integer division by zero panicking at runtime.
- **Pay close attention to the array vs. slice distinction** — it is a frequent source of bugs for newcomers, especially the value-copy behavior of `range`.
- **Treat the `io` interface section as reference material** you will return to when writing file or network code.
- **Note that the excerpts stop around the slice chapter**, so plan to read the concurrency, error-handling, and testing chapters directly in the book.
【Coverage Limits】
This guide covers roughly the first half of the book (through slices); the concurrency, error handling, testing, and observability chapters promised in the blurb are not represented in the excerpts and are described only at the level of the book's stated scope.
Page 7
compilation times, you will be refreshed to use a compiler that’s so fast, sometimes you’ll forget it’s running. Because of Go’s built-in concurrency feature...
such corresponding type for floating-point numbers. This is because the bit size of floating-point numbers is very important for precision, so it was decided...
3D [4][3][2]string fmt.Printf("array3D is a %T\n", array3D) This will output array3D is a [4][3][2]string, which you can read as "array3D is a length-four ar...
n just using a plain float32 or string. You can also create structs to group related data together, such as an ingredient with its quantity and unit. By mode...
e officially introduced in Go 1.18, released in March 2022. By providing a robust and type-safe way to write flexible, reusable code, generics eliminate much...
to Masiar Ighani <mighani@web.de> 212 7.2 The Go Error Type So what is this special error type that all of the fuss is about? It turns out it is a surprising...
is deferred to recover in case there is an underlying panic #3 If there is a panic recover will return a value for us to use #4 Calling the Keys function now...
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 in Action, Second Edition MEAP V09 (Joel Holmes, Andrew Walker, William Kennedy)(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 in Action, Second Edition MEAP V09 (Joel Holmes, Andrew Walker, William Kennedy)(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