Pakkeinitialisering
Når vi kører et Go-program, følger Go-kompileren en bestemt rækkefølge for udførelse af pakker, filer i en pakke og variabeldeklaration i disse filer.
Pakkeområde
Et område er et område i en kodeblok, hvor en defineret variabel er tilgængelig. Et pakkeområde er et område i en pakke, hvor en deklareret variabel er tilgængelig fra en pakke (på tværs af alle filerne i pakken). Dette område er den øverste blok i enhver fil i pakken.
Se på go run
-kommandoen. Denne gang har vi i stedet for at udføre én fil et glob-mønster til at inkludere alle filerne i app
-pakken til udførelse.
Go er smart nok til at finde ud af et indgangspunkt for programmet, som er entry.go
, fordi det har main
-funktionen. Vi kan også bruge en kommando som nedenfor (rækkefølgen af filnavne er ligegyldig).
go run src/app/version.go src/app/entry.go
💡 Du kan også bruge kommandoen
go run app
, som gør det samme, og det er en bedre fremgangsmåde til at udføre en pakke. Kommandoengo install
ellergo build
kræver et pakkenavn, som omfatter alle filer i en pakke, så vi behøver ikke at angive dem som ovenfor.
For at vende tilbage til vores hovedproblem kan vi bruge variabel version
, der er erklæret i filen version.go
, hvor som helst i pakken, selv om den ikke er eksporteret (som Version
), fordi den er erklæret i pakkeområdet.
Hvis version
-variablen ville være blevet erklæret inde i en funktion, ville den ikke have været i pakkeområdet, og ovenstående program ville ikke kunne kompileres.
Det er ikke tilladt at omdeklarere en global variabel med samme navn i samme pakke. Når version
variablen først er deklareret, kan den derfor ikke omdeklareres i pakkeområdet. Men du kan frit re-deklarere andre steder.
Variabelinitialisering
Når en variabel a
afhænger af en anden variabel b
, skal b
defineres på forhånd, ellers vil programmet ikke kunne kompileres. Go følger denne regel inde i funktioner.