They even have semantic effect: the visibility of a name outside a package is determined by whether its first character is upper case.

naming conventions

Package names

When a package is imported, the package name becomes an accessor for the contents.
import "bytes"

The package name is only the default name for imports; it need not be unique across all source code,
and in the rare case of a collision the importing package can choose a different name to use locally.

Getters

Go doesn’t provide automatic support for getters and setters.

If you have a field called owner, the getter method should be called Owner (upper case, exported), not GetOwner.
A setter function, if needed, will likely be called SetOwner.

  1. owner := obj.Owner()
  2. if owner != user {
  3. obj.SetOwner(user)
  4. }


Interface names

The one-method interfaces are named by the method name plus an -er suffix or similar modification to construct an agent noun: Reader, Writer, Formatter, CloseNotifier etc.

MixedCaps

Finally, the convention in Go is to use MixedCaps or mixedCaps rather than underscores to write multiword names.