Golang
Introduction
The Go Programming Language Specification
Standard lib
Go Docs
Composition over inheritance
Slice
- Go slices, usage and internals
- Effective Go - slices
- Append function documentation
- Slice tricks
- Effective Go - slices
- Effective Go - two-dimensional slices
- Go by example - slices
Map
Concurrent Slogon
Do not communicate by sharing memory; instead, share memory by communicating.
Although Go’s approach to concurrency originates in Hoare’s Communicating Sequential Processes (CSP) ,it can also be seen as a type-safe generalization of Unix pipes.
- Rob Pike’s concurrency slides (IO 2012)
- Video of Rob Pike at IO 2012
- Video of Concurrency is not parallelism (Rob Pike)
Concurrency
Channels
- Buffered Channel
- Unbuffered Channel
Goroutines
Goroutines run in the same address space, so access to shared memory must be synchronized. The sync package provides useful primitives, although you won’t need them much in Go as there are other primitives.
How are Go channels implemented?