Go
See also: ref/golang
A programming language designed at Google and released in 2009. Statically-typed, compiled, and garbage-collected. Known for its pugnacious approach to language design and strong support for concurrency using green threads called goroutines and synchronized queues called channels.
Links
Reference and overview:
Programming practices:
- "One process programming notes (with Go and SQLite)" (David Crawshaw, 2018)
- "Practical Go: Real world advice for writing maintainable Go programs" (Dave Cheney, 2019)
- "Go’s features of last resort" (Martin Tournoij, 2019)
- "On the uses and misuses of panics in Go" (Eli Bendersky, 2018)
Tooling and operations:
- "Building static binaries with Go on Linux" (Eli Bendersky, 2024)
- "Statically compiled Go programs, always, even with cgo, using musl" (Dominik Honnef, 2015)
- "Shrink your Go binaries with this one weird trick" (Filippo Valsorda, 2016)
Concurrency:
- Channel/goroutine behavior by example
- "Go Concurrency Patterns: Context" (Sameer Ajmani @ The Go Blog, 2014)
- "Go Concurrency Patterns: Pipelines and cancellation" (Sameer Ajmani @ The Go Blog, 2014)
- "Understanding Real-World Concurrency Bugs in Go" (Tengfei Tu et al, 2019)
- "Go hits the concurrency nail right on the head" (Eli Bendersky, 2018)
- "Why you can have millions of Goroutines but only thousands of Java Threads" (Russell Cohen, 2018)
- "Data Race Detector"
Language comparisons:
- "Einstein Analytics and Go" (Guillaume Le Stum @ Stack Overflow, 2019) – rewriting a backend from Python to Go
- "Why Go and not Rust?" (Loris Cro, 2019)
Language evolution:
- "Go 2 Draft Designs"
- "Backward Compatibility, Go 1.21, and Go 2" (Russ Cox, 2023)
Internals:
- "Go channels on steroids" (Dmitry Vyukov, 2014)
- "The Go runtime scheduler's clever way of dealing with system calls" (Chris Siebenmann, 2019)
- "Go's work-stealing scheduler" (rakyll, 2017)
- "The Go scheduler" (Daniel Morsing, 2013)
- "The Go netpoller" (Daniel Morsing, 2013)
-
- "The Go runtime scheduler's clever way of dealing with system calls" (Chris Siebenmann, 2019)
- "Some reasons for Go to not make system calls through the standard C library" (Chris Siebenmann, 2019)
- "Go compiler internals: adding a new statement to Go - Part 1" (Eli Bendersky, 2019)
- "Proposal: Register-based Go calling convention" (Austin Clements, 2020)
- "Getting to Go: The Journey of Go's Garbage Collector" (Rick Hudson, 2018)
Commentary:
- "Go at Google: Language Design in the Service of Software Engineering" (Rob Pike, 2012)
- "Go is Google's language, not ours" (Chris Siebenmann, 2019)
- "Ten Reasons Why I Don't Like Golang" (Lawrence Kesteloot, 2016)
- "I want off Mr. Golang's Wild Ride" (fasterthanlime, 2020)
- "Go Is a Shop-built Jig" (Rob Napier, 2014)
- "The Value in Go's Simplicity" (Ben Congdon, 2019)