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