Skip to main content
Entwickler Themen
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

7.2.2. Benennung und Packages

Namen in Go sind kurz, konsistent und Teil der API. Clients schreiben immer package.Name – der Package-Name ist damit die erste Silbe jedes exportierten Symbols.

MixedCaps, keine Unterstriche

const maxLength = 32
type UserProfile struct{}
func parseHTTPHeader() {}

Exportiert beginnt mit Großbuchstaben (UserProfile), unexportiert mit Kleinbuchstaben (maxLength).

Initialismen: durchgängig eine Schreibweise

HTTP, URL, ID – immer gleich: ServeHTTP, appID, urlPony. Nicht Http, Url oder Id.

Getter ohne Get

owner := obj.Owner()
obj.SetOwner(user)

Receiver: kurz und einheitlich

Nie this, self oder me. Pro Typ ein kurzer Name auf allen Methoden, z. B. c *Client.

Variablen: Scope bestimmt Länge

In einer kurzen Funktion reicht c; je weiter die Deklaration vom Gebrauch entfernt ist, desto sprechender der Name.

Package-Namen

Kurz, kleingeschrieben, idealerweise ein Wort: http, json, store. Der Verzeichnisname und der package-Name stimmen überein (…/encoding/base64 → package base64).

Stutter vermeiden

// package chubby
type File struct{} // Aufruf: chubby.File – nicht chubby.ChubbyFile

Keine Sammelbecken

Namen wie util, common, misc, api, types, interfaces werden schnell zur Müllhalde und kollidieren. Lieber nach Konzept schneiden:

package stringset

func New(vals ...string) map[string]bool { /* ... */ }

API klein halten

Unexportiert starten; erst exportieren, wenn ein anderes Package den Namen braucht. Stdlib zuerst (net/http, encoding/json, errors, context, io, testing), bevor eine dritte Dependency für 20 Zeilen Helper einzieht – siehe auch 7.2.7. Einfachheit.

Package-Kommentar

Jedes Package braucht einen Kommentar direkt vor der package-Zeile (ohne Leerzeile dazwischen). Details: 7.2.6. Dokumentation und Tests.

Diese Seite gehört zu 7.2. Clean Code.