maintains MUST READ articles
When reading code, it should be clear what the program will do.
When writing code, it should be clear how to make the program do what you want.
Leading edge language features don't usually address what you really want.
Golang is designed for large applications, large teams and large dependencies.
- Rob Pike: Go Proverb Page, Video
- Campoy: Understanding nil
- Twelve Go Best Practices: Slide, Video
- Go best practices, six years in: Article, Video
Concurrency is about structure, while Paralleism is about execution
- Rob Pike: Concurrency is not Parallelism Slide, Video
- Go Concurrency Patterns
- Curious Channels
- Complex Concurrency Patterns With Go
- Advanced Go Concurrency Patterns
Error values in Go aren’t special, they are just values like any other, and so you have the entire language at your disposal.
- Go Blog: Defer, Panic, and Recover
- Go Blog: Error Handling and Go
- Go Blog: Errors are Values
- Dave Cheney: Don't just check errors, handle them gracefully Article, Video
Go solves the exception problem by not having exceptions.
... The decision to not include exceptions in Go is an example of its simplicity and orthogonality. Using multiple return values and a simple convention, Go solves the problem of letting programmers know when things have gone wrong and reserves panic for the truly exceptional.
- Dave Cheney: Why Go gets exceptions right
- Dave Cheney: Inspecting errors
- Dave Cheney: Error handling vs. exceptions redux
- Dave Cheney: Errors and Exceptions, redux
Knowing the difference between which errors to ignore and which to check is why we’re paid as professionals.
If C++ and Java are about type hierarchies and the taxonomy of types, Go is about composition
Q. Hey gophers, what was the best/worst moment of your experienes lenaring golang?
A. The worst was interface, but the best was also interface
- Dave Cheney: Pointers in Go
- Things I Wish Someone Had Told Me About Go
- Dave Cheney: Go has both make and new functions, what gives?
- Dave Cheney: Should methods be declared on T or *T