A projecthez tartozó GitHub Repository itt található
Go App megírása
Klónozd le a privát repositoryt, amit az előző lépésben létrehoztál.
Lépj be a project mappájába a terminálodon, és hozz benne létre két új alkönyvtárat.
cd penguin-api mkdir -p cmd/penguin-api
Létrehozzuk az első .go fájlunkat.
code cmd/penguin-api/main.go
A fájlunk így fog kinézni, a #
utáni kommenteket nem kell megtartanod, azok csak azért vannak ott, hogy elmagyarázzák, mi mit csinál.
package main # Ez határozza meg, hogy milyen package-ben vagyunk.
func main() { # A main függvény kerül meghívásra alapból, ezért használjuk ezt a nevet.
fmt.Println("Hello Gyula") # Kiíratjuk a standard outputra, hogy Hello Gyula
}
A programunkat le tudod futtatni a project gyökérkönyvtárából, az alábbi paranncsal:
go run cmd/penguin-api/main.go
Buildelni az alábbi paranccsal tudod (ezesetben a futtatható binary fájlt kapsz, amit külön paranccsal lefuttathatsz)
go build -o ./penguin-api cmd/penguin-api/main.go
./penguin-api # futtatás
Ezután létrehozunk egy új Makefile
-t a gyökérkönyvtárban, amiben rögzítjük a különböző “target”-eket, amiket meg fogunk tudni hívni egyenként.
APP = penguin-api # Változóba kivezetjük a project nevét, hogy csak egy helyen kelljen változtatni a jövőben.
BIN_LINUX = ./bin/$(APP) # Változóban mondjuk meg, hova szeretnénk menteni a futtatható fájlt
CMD_SRC = ./cmd/$(APP)/main.go # Változóban tároljuk, hol található a programunk main függvénye
build: # Ez a target létrehoz egy futtatható fájlt a Go programunkból
go build -o $(BIN_LINUX) $(CMD_SRC)
run: build # Ez target meghívja a "build" targetet, majd lefuttatja a programunkat.
$(BIN_LINUX)
clean: # Ez a target letörli a bin könyvtárat, ha meghívjuk
rm -rf bin/
Létrehozunk egy .gitignore
fájlt, az alábbi tartalommal:
bin/
Ezzel érjük el, hogy a git NE commitolja fel a bin
könyvtárunkat a repositoryba, mert binary fájlokat nem szokás felpusholni.
Go modul készítése
Ezen a ponton szeretnénk újabb .go fájlokat készíteni, és szeretnénk ha a különböző fájlok és package-ek, felismernék egymást, és tudnának egymásra hivatkozni. Ezért a project gyökérkönyvtárában létrehozunk egy go module-t.
go mod init github.com/[sajat_github_profil_neved]/[repository_neve]
Nem lenne kötelező ezt a nevet adni neki (lehetne a neve Géza is), de ha a repo github linkjét adod át névnek, akkor biztos lehetsz benne, hogy egyedi lesz, és mások könnyen meg tudják majd találni a Go module-t a neten. (Már ha a repo publikus, de a mi esetünkben most nem az, úgyhogy nem fogják megtalálni. Attól még ezt a nevet fogjuk használni, hogy konzisztens legyen a konvenciókkal)
Ez létre fog hozni egy go.mod
fájlt a project gyökérkönyvtárában, amibe magától beleírja a module nevét, és a go verzió számát, amivel a projectet létrehoztad. Minden további 3rd party dependencia is ide fog íródni magától, ha később a go get ...
parancsot használjuk.
Próbáld meg buildelni, lefuttatni és törölni a Go Appodat, a make fájl használatával.
make build
make run
make clean
(Ha egyben akarod őket futtatni, akkor csinálhatod így is: make build run clean
)
Visszaküldés a repositoryba
Végül pedig állítsd össze a módosításaidat és commitold őket GitHubra.
git status # Információt ad vissza a git repo aktuális állapotáról
git add . # a stage-re helyezi a módosított/hozzáadott fájlokat
git commit -m "Creating the base of our Go App" # A stage tartalmát commitolja a lokális repositoryba
git push origin main # Felpusholja a commitodat a GitHub repositoryba, aminek a UI-on is megnézheted a tartalmát