Go Style: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 47: Line 47:
=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}}
=Getters and Setters=
{{External|https://go.dev/doc/effective_go#Getters}}
It is neither idiomatic, not necessary to put "Get" in the getter's name. If you have a field called owner (lower case, unexported), the getter method should be called <code>Owner()</code> (upper case, exported), '''not''' <code>Owner()</code>.
A setter function, if needed, should be called <code>SetOwner()</code>.

Revision as of 22:31, 14 December 2023

External

Internal

Overview

The Go standard library is a good source of code examples, comments and style.

Naming

https://google.github.io/styleguide/go/guide#mixedcaps

Naming is one of the most important aspects of Go development. Writing idiomatic Go requires understanding of its core naming principles.

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.

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.

Other naming conventions:

Integrate this:

Comments

Go Language | Comments

Idiomatic Error Handling

Idiomatic Error Handling

Getters and Setters

https://go.dev/doc/effective_go#Getters

It is neither idiomatic, not necessary to put "Get" in the getter's name. If you have a field called owner (lower case, unexported), the getter method should be called Owner() (upper case, exported), not Owner().

A setter function, if needed, should be called SetOwner().