Go Style Guide
Overview
This page explains preferences in regard to the style of Go code written for the DAOS (and other related) project(s).
We intend to follow the official coding style and idioms used in the standard library, therefore please view this as a supplement to Effective Go and Go Code Review Comments .
**Please discuss changes before editing this page**, even _minor_ ones. Many people have opinions and this is not the place for edit wars.
Points of note
Clarifications of rules that are already covered in the official style guide.
Line Width
Avoid very long lines but don't enforce a 80-column limit, not having a line limit simplifies the use of goimports and gorename. See line-length.
Linters
Run goimports, a superset of `gofmt` which additionally adds (and removes) import lines as necessary. gofmt automatically fixes the majority of mechanical style issues. Almost all Go code in the wild uses `gofmt`. The rest of this document addresses non-mechanical style points. use-linters give some explanation of the importance of running code through linters before committing.
Naming
Keep function and variable names as short as possible, C-like function names are preferred where possible in mixed-caps . Attempt to keep function and variable names to less than 20 characters and less than 5 words.
Comment Sentences
See comment-sentences.
Comment Usage
Use of comments is encouraged, comments should be used to describe the intent of code when it is not obvious. See commentary.
Using Mocks In Tests
Use of mocking when writing tests is encouraged, see here for a discussion of the use of mocking in go. GoMock is the recommended mocking framework.
Exceptions
Deviations from rules that are already covered in the official style guide.
Currently none.