Hagyományosan az első programot, amit bármilyen programozási nyelven írsz, “Hello World” programnak hívják – egy olyan program, amely egyszerűen Hello World
-t ad ki a terminálra. Írjunk egyet a Go segítségével.
Először is hozzunk létre egy új mappát, ahol a programunkat tárolhatjuk. Hozzunk létre egy ~/src/golang-book/chapter2
nevű mappát. (Ahol a ~
a home könyvtáradat jelenti) A terminálról ezt a következő parancsok beírásával tudod megtenni:
mkdir src/golang-bookmkdir src/golang-book/chapter2
A szövegszerkesztővel írjuk be a következőket:
package mainimport "fmt"// this is a commentfunc main() { fmt.Println("Hello World")}
Győződj meg róla, hogy a fájlod megegyezik az itt láthatóval, és mentsd el main.go
néven az imént létrehozott mappába. Nyissunk egy új terminált, és írjuk be a következőt:
cd src/golang-book/chapter2go run main.go
A terminálban meg kell jelenjen a Hello World
. A go run
parancs átveszi az egymást követő fájlokat (szóközökkel elválasztva), összeállítja őket egy ideiglenes könyvtárba mentett futtatható állományba, majd lefuttatja a programot. Ha nem látta megjelenítve a Hello World
parancsot, akkor lehet, hogy hibát követett el a program beírásakor. A Go fordító ad tippeket arra vonatkozóan, hogy hol van a hiba. Mint a legtöbb fordítóprogram, a Go fordító is rendkívül pedáns, és nem tolerálja a hibákat.
Hogyan olvassunk el egy Go programot
Nézzük meg ezt a programot részletesebben. A Go programokat felülről lefelé, balról jobbra olvassuk. (Mint egy könyvben) Az első sorban ez áll:
package main
Ez az úgynevezett “csomag deklaráció”. Minden Go programnak egy csomagdeklarációval kell kezdődnie. A csomagok a Go módszere a kód szervezésére és újrafelhasználására. A Go programoknak két típusa van: a futtatható programok és a könyvtárak. A végrehajtható programok azok a fajta programok, amelyeket közvetlenül a terminálból futtathatunk. (Windowsban .exe
végződéssel végződnek) A könyvtárak olyan kódgyűjtemények, amelyeket összecsomagolunk, hogy más programokban használhassuk őket. A könyvtárakat később részletesebben is meg fogjuk vizsgálni, egyelőre csak arra ügyeljünk, hogy ez a sor szerepeljen minden programban, amit írunk.
A következő sor egy üres sor. A számítógépek az újsorokat egy speciális karakterrel (vagy több karakterrel) jelölik. Az újsorokat, a szóközöket és a tabulátorokat whitespace-nek nevezzük (mivel nem láthatjuk őket). A Go-t többnyire nem érdekli a whitespace, mi használjuk, hogy könnyebben olvashatóvá tegyük a programokat. (Ezt a sort eltávolíthatnánk, és a program pontosan ugyanúgy viselkedne)
Aztán ezt látjuk:
import "fmt"
A import
kulcsszóval más csomagokból származó kódot vonunk be a programunkba. A fmt
csomag (a format rövidítése) a bemenet és a kimenet formázását valósítja meg. Tekintettel arra, amit az imént tanultunk a csomagokról, mit gondolsz, mit tartalmaznának a fmt
csomag fájljai a tetejükön?
Megjegyezzük, hogy a fenti fmt
idézőjelekkel van körülvéve. Az ilyen kettős idézőjelek használata “string literal” néven ismert, ami egyfajta “kifejezés”. A Go nyelvben a karakterláncok karakterek (betűk, számok, szimbólumok, …) meghatározott hosszúságú sorozatát jelentik. A stringeket részletesebben a következő fejezetben ismertetjük, de most a fontos dolog, amit szem előtt kell tartanunk, hogy a nyitó "
karaktert végül egy másik "
karakternek kell követnie, és minden, ami a kettő között van, benne van a stringben. (Maga a "
karakter nem része a karakterláncnak)
A //
-vel kezdődő sort nevezzük megjegyzésnek. A megjegyzéseket a Go fordítóprogram figyelmen kívül hagyja, és a saját érdekedben vannak ott (vagy bárki más veszi át a programod forráskódját). A Go két különböző stílusú megjegyzést támogat: A //
kommenteket, amelyekben a //
és a sor vége közötti összes szöveg a komment része, és a /* */
kommenteket, amelyekben minden, ami a *
-ak között van, a komment része. (És több sort is tartalmazhat)
Ezek után egy függvény deklaráció következik:
func main() { fmt.Println("Hello World")}
A függvények a Go program építőkövei. Vannak bemeneteik, kimeneteik és egy sor utasításnak nevezett lépéssorozatuk, amelyeket sorrendben hajtanak végre. Minden függvény a func
kulcsszóval kezdődik, amelyet a függvény neve (ebben az esetben main
), egy nulla vagy több “paraméterből” álló, zárójelekkel körülvett lista, egy opcionális visszatérési típus és egy “test” követ, amelyet szögletes zárójelek vesznek körül. Ennek a függvénynek nincsenek paraméterei, nem ad vissza semmit, és csak egy utasítással rendelkezik. A main
név azért különleges, mert ez az a függvény, amelyet a program végrehajtásakor meghívunk.
A programunk utolsó darabja ez a sor:
fmt.Println("Hello World")
Ez az utasítás három összetevőből áll. Először is elérünk egy másik függvényt a fmt
csomagon belül, amelynek a neve Println
(ez a fmt.Println
darab, a Println
jelentése Print Line). Ezután létrehozunk egy új karakterláncot, amely Hello World
-t tartalmaz, és meghívjuk (más néven hívjuk vagy végrehajtjuk) ezt a függvényt a karakterlánccal, mint első és egyetlen argumentummal.
Ezzel a ponttal már sok új terminológiát láttunk, és lehet, hogy egy kicsit túlterheltek vagyunk. Néha hasznos, ha szándékosan hangosan felolvassuk a programunkat. Az imént írt programunk egyik felolvasása így hangozhat:
Készítsünk egy új futtatható programot, amely hivatkozik a fmt
könyvtárra, és tartalmaz egy main
nevű függvényt. Ez a függvény nem fogad el argumentumokat, nem ad vissza semmit, és a következőket teszi: Hozzáfér a fmt
csomagban található Println
függvényhez, és egy argumentummal – a Hello World
karakterlánccal – hívja meg.
A Println
függvény végzi az igazi munkát ebben a programban. Többet megtudhatsz róla, ha a terminálodba beírod a következőt:
godoc fmt Println
Egyebek mellett ezt kell látnod:
Println formats using the default formats for its operands and writes to standard output. Spaces are always added between operands and a newline is appended. It returns the number of bytes written and any write error encountered.
A Go egy nagyon jól dokumentált programozási nyelv, de ezt a dokumentációt nehéz lehet megérteni, hacsak nem vagy már jártas a programozási nyelvekben. Mindazonáltal a godoc
parancs rendkívül hasznos, és jó kiindulópont, ha kérdésed van.
Visszatérve a szóban forgó függvényhez, ez a dokumentáció azt mondja, hogy a Println
függvény azt küldi a standard kimenetre – a terminál kimenete, amelyben dolgozol -, amit megadsz neki. Ez a függvény okozza a Hello World
megjelenítését.
A következő fejezetben a típusok megismerésével azt vizsgáljuk meg, hogyan tárolja és reprezentálja a Go az olyan dolgokat, mint a Hello World
.
Problémák
-
Mi a szóköz?
-
Mi a megjegyzés? Milyen kétféleképpen írhatunk megjegyzést?
-
A programunk
package main
-mal kezdődött. Mivel kezdődnének afmt
csomagban lévő fájlok? -
A
fmt
csomagban definiáltPrintln
függvényt használtuk. Ha aos
csomagban találhatóExit
függvényt akarnánk használni, mit kellene tennünk? -
Módosítsuk az általunk írt programot úgy, hogy a
Hello World
helyettHello, my name is
-t írjon ki, amelyet a neved követ.
← Previous | Index |
.