Pakettien alustaminen
Kun ajamme Go:n ohjelmaa, Go-kääntäjä noudattaa tiettyä suoritusjärjestystä paketeille, paketin sisältämille tiedostoille ja näissä tiedostoissa oleville muuttujien selityksille.
Pakettien laajuus
Laajuusalue (scope, scope) eli laajuusalue (scope) on koodilohkossa oleva alue, jossa määriteltyyn muuttujaan pääsee. Paketin laajuus on alue paketissa, jossa määriteltyyn muuttujaan pääsee käsiksi paketin sisältä (kaikista paketin tiedostoista). Tämä alue on paketin minkä tahansa tiedoston ylimpänä oleva lohko.
Katso go run
-komentoa. Tällä kertaa yhden tiedoston suorittamisen sijaan meillä on glob-kuvio, joka sisällyttää kaikki tiedostot app
-paketin sisällä suoritettavaksi.
Go on tarpeeksi fiksu tajutakseen sovelluksen tulopisteen, joka on entry.go
, koska sillä on main
-funktio. Voimme myös käyttää alla olevan kaltaista komentoa (tiedostojen järjestyksellä ei ole väliä).
go run src/app/version.go src/app/entry.go
💡 Voit myös käyttää
go run app
-komentoa, joka tekee saman asian, ja tämä on parempi lähestymistapa paketin suorittamiseen.go install
– taigo build
-komento vaatii paketin nimen, joka sisältää kaikki paketin sisällä olevat tiedostot, joten meidän ei tarvitse määritellä niitä kuten edellä.
Palatakseni pääkysymykseemme, voimme käyttää muuttujaa version
, joka on julistettu version.go
-tiedostossa, mistä tahansa paketissa, vaikka sitä ei ole viety (kuten Version
), koska se on julistettu paketin laajuudessa.
Jos muuttuja version
olisi julistettu funktion sisällä, se ei olisi ollut paketin laajuudessa ja yllä oleva ohjelma olisi epäonnistunut kääntämisessä.
Sinä et saa julistaa uudelleen samannimistä globaalia muuttujaa samassa paketissa. Näin ollen, kun version
muuttuja on kerran ilmoitettu, sitä ei voi ilmoittaa uudelleen paketin laajuudessa. Mutta muualla sen voi vapaasti julistaa uudelleen.