Go 101

Go 101 is a book focusing on Go syntax/semantics and all kinds of runtime related things (Go 1.15 ready) and tries to help gophers gain a deep and thorough understanding of Go. This book also collects many details of Go and in Go programming. It is expected that this book is helpful for both beginner and experienced Go programmers.

the book

(about 500 pages, 350+ examples, 101+ details)

The digital versions of this book are available at the following places: Tapir, the author of Go 101, has spent 3+ years on writing the Go 101 book and maintaining the go101.org website. New contents will continue being added to the book and the website from time to time. Tapir is also an indie game developer. If you would like to, you can support the book and the website by playing Tapir's games (made for both Android and iPhone/iPad). Individual donations are also accepted via PayPal.
2020/Sep/06: This book ever mentioned that using "append" to clone slices is often much more efficient than using "make+copy" to clone slices. This is valid for Go Toolchain before version 1.15. However, since version 1.15, the official standard Go compiler has made special optimizations for the latter way, so now the latter way is always more efficient than the former way (the "append" way).
2020/Aug/13: Correction: the Compiler Optimizations for Conversions Between Strings and Byte Slices section said "a conversion (from byte slice to string) which is used as a map key in map element indexing syntax" before. In fact, it shoud be "a conversion (from byte slice to string) which is used as a map key in map element retrieval indexing syntax". The example code is also corrected.
Index: