Learn how to call C code from Go and vice versa using CGO for system-level programming.
Understand Go's low-level assembly language to optimize performance-critical code.
Build distributed systems by learning RPC implementation and Protobuf serialization.
Study advanced patterns for designing web frameworks and concurrent systems in Go.
This repository contains the source for "Advanced Go Programming" (Go语言高级编程), a freely available Chinese-language book for experienced Go developers who want to go deeper into the language. A second edition has been published in print and is also available online. The book is aimed at Go developers who already know the basics and want to understand advanced topics that typical introductory resources skip. The topics covered include CGO (the Go mechanism for calling C code from Go, and vice versa), Go assembly language (the low-level assembly dialect used inside Go's own standard library), implementing Remote Procedure Call (RPC) systems from scratch, building Protobuf plugins (Protobuf is a widely-used data serialization format common in distributed systems), building web frameworks, and designing distributed systems. The authors recommend that readers new to Go start with "The Go Programming Language" (a foundational book) before tackling this material. The repository also links to companion books by the same author on Go's abstract syntax tree (for those interested in building compilers or code analysis tools) and building a toy Go compiler from scratch. The book is written in Go and the repository contains the book's Markdown source. It is published under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 license, meaning it can be read freely but not used commercially or republished in modified form. You would use this as a study resource if you are a Go developer comfortable with the basics and want to understand how Go works at a deeper level, particularly around system programming, performance, and distributed computing.
Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.