Awesome
Golang Internals Resources
This is a curated collection of Articles and Videos about Golang internals. It is intended for advanced/intermediate programmers who are new to Golang and want to understand what happens under the hood. Feel free to add to it!
Data Structures and Data Types
Nil
Understanding Nil Talk by Francesc Campoy
Slices
Go Slices: usage and internals from The Go Blog
Structs
The empty struct by Dave Chevney
Maps
Macro View of Map Internals In Go by William Kennedy
Inside the Map Implementation Talk by Keith Randall
How the Go runtime implements maps efficiently (without generics) by Dave Cheney
Interfaces
Go Data Structures: Interfaces by Russ Cox
Golang concepts from an OOP point of view by Lucio Tato
Understanding Go Interfaces Talk by Francesc Campoy
Hacking the Golang Type System
Hacking Go's type system by Tiago Katcipis
Go 1.18 Generics
Go 1.18 Implementation of Generics via Dictionaries and Gcshape Stenciling
Concurrency Primitives
Goroutines
How Goroutines Work by Krishna Sundarram
Channels
Channels in Golang by @TapirLiu
Tools
"go test -race" Under the Hood Talk by Kavya Joshi
Scheduler
Scalable Go Scheduler Design Doc by Dmitry Vyukov from the Go 1.1 Design Docs
Go Preemptive Scheduler Design Doc by Dmitry Vyukov from the Go 1.3 Design Docs
How does the golang scheduler work? by Ian Lance Taylor
Go's work-stealing scheduler by Jaana B. Dogan
Timers
How Do They Do It: Timers in Go by Alexander Morozov
Memory
The Go Memory Model from the Go Documentation
Contiguous stacks in Go by Agis Anastasopoulos
Contiguous Stacks from the GO 1.3 Design Docs
Garbage Collection
Golang’s Real-time GC in Theory and Practice by Will Sewell
Request Oriented Collector (ROC) Algorithm by Rick Hudson and Austin Clements and discussion at golang-dev
Compilation
A Quick Guide to Go's Assembler from the Go Documentation
The Design of the Go Assembler talk by Rob Pike
Dropping Down Go Functions in Assembly (slides) talk by Michael Munday
Golang Internals Series of Blog Posts by Siarhei Matsiukevich
Go compiler internals: adding a new statement to Go two-part series of posts by Eli Bendersky
SSA compiler
SSA Backend for the Go Compiler by Keith Randall
SSA optimization rules description language by Iskander Sharipov
Algorithms used by SSA compiler
Simple and Efficient Construction of Static Single Assignment Form by Braun, Buchwald, Hack, Leißa, Mallon, and Zwinkau
A Linear Time Algorithm for Placing Φ-Nodes by Sreedhar & Gao
General
A lot of other information can be gathered from the Go Design Documents and from the (now defunct) Unofficial Go Internals wiki