Öffentlich, Privat - Großbuchstaben, Kleinbuchstaben:
Neu GoLang, kommt von Delphi, C++ :
Erste mal habe ich versucht, um meine eigene Paket-in zu Gehen, ich folgte allen Anweisungen darüber, wie das Layout der Arbeitsfläche, etc, aber ich blieb immer ein compiler Fehler:
./myPackage.go:52: undefined: myFunc
Nach stochern ein bisschen entdeckte ich, dass der public-zugriffsmodifizierer in Go ist erreicht, einfach durch die Deklaration einer Funktion in Großbuchstaben. Toll.
Aber als ich anfing, Experimentieren mit den container-Klassen - List
für den Anfang, ich entdeckte, ich hatte zu erklären, eine Liste mit Referenz Rückgabewert wie diese:
func GetFactors(value *int64) *list.List {...
*list
ist in Kleinbuchstaben.
Gleiche, wenn ich deklariert eine lokale Referenz auf eine Liste, die ich hatte, zu verwenden:
l := list.New()
Wieder, Kleinbuchstaben für list
.
So, ich bin verwirrt. Was ist die Regel? Die Liste Aufrufe und Verweise sind offensichtlich in der öffentlichkeit, oder ich wäre nicht in der Lage zu nennen/verwenden Sie - also, warum sind Sie in Kleinschreibung?
InformationsquelleAutor der Frage Vector | 2013-12-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
In diesem Fall
list
ist der name des Pakets, die Sie importieren, überimport "container/list"
und seine öffentliche Mitglieder sind Großbuchstaben, wieList
.Die Regel ist, dass öffentliche Funktionen, Typen, etc., sollte in Großbuchstaben angegeben werden.
Können Sie alias-importierte Pakete wie Sie wollen, es ist aber standardmäßig nur der name des letzten Teils von den Paket-Pfad-in diesem Fall
list
.Update: Es ist nicht der Letzte Teil der package-Pfad. Es ist die tatsächliche Paket-name (das ist oft das gleiche).
InformationsquelleAutor der Antwort Eve Freeman
Hinweis: starten Gehen Sie 1.5 (Q2/Q3 2015), erhalten Sie "geschützt" import als auch (mit der Bezeichnung "internal")!
Sehen Go 1.4 doc:
InformationsquelleAutor der Antwort VonC
Hinweis: die Gehen Sie mit der Spezifikation der Paket-name nicht erwähnen, dass ein package name wird immer in Kleinbuchstaben.
Es einzige Staat, der seinen Namen ist, wird durch eine Bezeichner, welche aus einer Sammlung von "Brief".
Dieser thread nicht klären:
Wenn Sie wissen, dass, ist es einfacher zu erkennen:
Liste.Neues()
für eine Konstruktor (immer auf Paket-Ebene, erstellen einer initialisierten Instanz eines Typs), wieos.NewFile()
,Liste.List
für eine struct-Typ der Paket-Liste (die anderen struct-Typ des gleichen PaketsListe.Element
).InformationsquelleAutor der Antwort VonC