Share E-Book
Scan to open this page

Scan with your phone to open this page

Author: Joel Holmes, Andrew Walker, William Kennedy

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

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...
View in text
Excerpt 2
st important parts of any software, and Go uses the C-style of syntax where line comments start with // and block comments are surrounded with /* and */ © Ma...
View in text
Excerpt 3
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...
View in text
Excerpt 4
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...
View in text
Excerpt 5
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...
View in text
Excerpt 6
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...
View in text
Excerpt 7
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...
View in text
Excerpt 8
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...
View in text
Tags
AI categories
GoProgramming LanguageBackend
Publish Year: 2026
Language: English
Pages: 374
File Format: PDF
File Size: 7.1 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Generating text preview…