Go Style: Difference between revisions
(→Naming) |
|||
Line 58: | Line 58: | ||
=Idiomatic Error Handling= | =Idiomatic Error Handling= | ||
{{Internal|Go_Language_Error_Handling#Idiomatic_Error_Handling|Idiomatic Error Handling}} | {{Internal|Go_Language_Error_Handling#Idiomatic_Error_Handling|Idiomatic Error Handling}} | ||
Revision as of 00:39, 4 July 2024
External
- https://google.github.io/styleguide/go/
- https://go.dev/doc/effective_go
- https://github.com/golang/go/wiki/CodeReviewComments
Internal
Overview
The Go standard library is a good source of code examples, comments and style.
Line Length
Go has no line length limit. However, if the line feels too long, wrap it and indent it with an extra tab.
Naming
Naming is one of the most important aspects of Go development. Writing idiomatic Go requires understanding of its core naming principles.
Identifiers
Identifiers should use camel case: SomeColor
or someColor
, depending on whether they are visible outside the package or not. This is how package encapsulation works.
Do not use snake case some_color
.
Every exported name should be documented with a comment, following idiomatic comment conventions.
Acronyms should have a consistent case. URL
or url
is correct, Url
is not.
When a variable, struct or interface is imported from another package, its name includes the package name or alias: mypackage.MyVar
. This is a reason to try to make the package name and the feature name work together.
Use name abbreviations only if they are widely used (example: fmt
).
Avoid name collisions, when possible. If you introduce a set of string functions, avoid calling the package strings
because a package with the same name exists in the standard library already.
Long names do not automatically make things more readable. A helpful doc comment can often be more valuable than an extra long name.
Other naming conventions:
- Source Files Naming Conventions
- Idiomatic Package Conventions
- Idiomatic Variable Naming Conventions
- Idiomatic Function Naming Conventions
- Idiomatic Struct Naming Conventions
- Idiomatic Interface Conventions
- Idiomatic Error Conventions
Integrate this:
- https://go.dev/talks/2014/names.slide#1
- https://golang.org/doc/effective_go.html#names
- https://blog.golang.org/package-names
- https://rakyll.org/style-packages/