Go Proverbs

Go Proverbs

As presented by Rob Pike at Gopherfest SV, November 2015
Video: https://www.youtube.com/watch?v=PAAkCSZUG1c

7eca3e06edc3c69004aaf57de51900c2?s=128

Anthony Starks

November 22, 2015
Tweet

Transcript

  1. Go Proverbs Don’t communicate by sharing memory, share memory by

    communicating. Concurrency is not parallelism. Channels orchestrate; mutexes serialize. The bigger the interface, the weaker the abstraction. Make the zero value useful. interface{} says nothing. Gofmt’s style is no one’s favorite, yet gofmt is everyone’s favorite. A little copying is better than a little dependency. Syscall must always be guarded with build tags. Cgo must always be guarded with build tags. Cgo is not Go. With the unsafe package there are no guarantees. Clear is better than clever. Reflection is never clear. Errors are values. Don’t just check errors, handle them gracefully. Design the architecture, name the components, document the details. Documentation is for users. Don’t panic.
  2. Don’t communicate by sharing memory, share memory by communicating.

  3. Concurrency is not parallelism.

  4. Channels orchestrate; mutexes serialize.

  5. The bigger the interface, the weaker the abstraction.

  6. Make the zero value useful.

  7. interface{} says nothing.

  8. Gofmt’s style is no one’s favorite, yet gofmt is everyone’s

    favorite.
  9. A little copying is better than a little dependency.

  10. Syscall must always be guarded with build tags.

  11. Cgo must always be guarded with build tags.

  12. Cgo is not Go.

  13. With the unsafe package there are no guarantees.

  14. Clear is better than clever.

  15. Reflection is never clear.

  16. Errors are values.

  17. Don’t just check errors, handle them gracefully.

  18. Design the architecture, name the components, document the details.

  19. Documentation is for users.

  20. Don’t panic.