Go Style: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 35: Line 35:
* [[Go_Structs#Idiomatic_Struct_Naming_Conventions|Idiomatic Struct Naming Conventions]]
* [[Go_Structs#Idiomatic_Struct_Naming_Conventions|Idiomatic Struct Naming Conventions]]
* [[Go_Interfaces#Idiomatic_Interface_Conventions|Idiomatic Interface Conventions]]
* [[Go_Interfaces#Idiomatic_Interface_Conventions|Idiomatic Interface Conventions]]
 
* [[Go_Language_Error_Handling#idiom|Idiomatic Error Conventions]]
<font color=darkkhaki>Integrate this:  
<font color=darkkhaki>Integrate this:  
* https://go.dev/talks/2014/names.slide#1
* https://go.dev/talks/2014/names.slide#1

Revision as of 02:40, 28 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().