https://dave.cheney.net/practical-go/presentations/qcon-china.html Table of Contents Introduction1. Guiding principles 1.1. Simplicity1.2. Readability1.3. Productivity 2. Identifiers 2.1. Choose identifiers for clarity, not brevity2.2. Identifier length2.3. Don’t name your variables for their types2.4. Use a consistent naming style2.5. Use a consistent declaration style2.6. Be a team player 3. Comments 3.1. Comments on variables and constants should describe their contents not their purpose3.2. Always document public symbols 4. Package Design 4.1. A good package starts with its name4.2. Avoid package names likebase,common, orutil4.3. Return early rather than nesting deeply4.4. Make the zero value useful4.5. Avoid package level state 5. Project Structure 5.1. Consider fewer, larger packages5.2. Keep package main small as small as possible 6. API Design 6.1. Design APIs that are hard to misuse.6.2. Design APIs for their default use case6.3. Let functions define the behaviour they requires 7. Error handling 7.1. Eliminate error handling by eliminating errors7.2. Only handle an error once 8. Concurrency 8.1. Keep yourself busy or do the work yourself8.2. Leave concurrency to the caller8.3. Never start a goroutine without knowning when it will stop