Kurzusleírás
1. Bevezetés a Go nyelvezetbe
- Mi az a Go (Golang)?
- A Go története és tervezési filozófiája
- A Go mint webes és rendszerszintű programozási nyelvezet
- Fő jellemzők:
- Statikus tipizálás
- Egyszerűség és olvashatóság
- Gyors fordítás
- Beépített párhuzamosítás
- Szemétgyűjtés
- Köztér-szintű fordítás
- Gyakori felhasználási területek a Go nyelvezetben
- A Go előnyei és korlátai
- A Go összehasonlítása a C/C++, JavaScript, Ruby, Python és Java nyelvekkel
- A Go ökoszisztéma megértése
- A Go standard könyvtár áttekintése
- Go modulok és függőségkezelés
- Egy Go-alalmazás anatómiája
- Gyakorlat: Egy egyszerű Go-program vizsgálatára futtatása
2. A Go-fejlesztői környezet beállítása
- A Go telepítése
- A Go eszközkészlet megértése
- Környezeti változók beállítása
- IDE vagy kód szerkesztő kiválasztása
- A Go használata parancssorból
- Go munkaterület létrehozása
- A Go projektszerkezet megértése
- Projekt inicializálása Go Modulokkal
- A
go mod inithasználata - Függőségek kezelése a
go gethasználatával - Függőségek frissítése és vizsgálata
- Forráskód formázása a
gofmthasználatával - Programok futtatása a
go runhasználatával - Alkalmazások fordítása a
go buildhasználatával - Go-alalmazások telepítése
- Köztér-szintű fordítás
- Gyakorlat: Go projekt létrehozása és beállítása egy konténerben
3. Go változók, konstansok és típusok
- Változók deklarációja
- Explitke vs. levezetett típusok
- Rövid változódeklarációk
- Konstansok
- Zérusértékek
- Változók hatóköre és élettartama
- Első osztályú adattípusok:
- Éges számok
- Lebegőpontos számok
- Komplex számok
- Boolean értékek
- Karaktéros sorok
- Típuskonverziók
- Működés Unicode és UTF-8 formátummal
- Runek és bájtok
- Többváltozós hozzárendelés
- Típusbiztonság megértése
- Gyakorlat: Egy kis parancssori adatsfeldolgozó program elkészítése
4. Operátorok és kifejezések
- Matematikai operátorok
- Összehasonlító operátorok
- Logikai operátorok
- Hozzárendelő operátorok
- Inkrementálás és dekrementálás
- Operátorprioritás
- Működés egész számokkal és lebegőpontos számokkal
- Gyakori típuskonverziós hibák elkerülése
- Gyakorlat: Számítások és validálási logika megvalósítása
5. Dátumok, idő és formázás
- A
timecsomag használata - Dátumok létrehozása és manipulálása
- Jelenlegi idő lekérdezése
- Időzónák és helyek
- Dátumok és idő formátumának elemzése
- Dátumok és idő formázása
- Időtávolságok számítása
- Működés Unix időbélyegekkel
- Időtúllépések kezelése
- Gyakorlat: Időbélyegek és időtartam-számítások hozzáadása egy alkalmazáshoz
6. Tömbök, vágatok, mappek és struktúrák
Tömbök
- Tömbök deklarációja
- Tömbök inicializálása
- Tömbök átlapozása
- Többdimenziós tömbök
Vágatok (Slices)
- Vágatok vs. tömbök megértése
- Vágatok létrehozása
- Elemek hozzáadása
- Vágatok másolása
- Vágatok hossza és kapacitása
- Vágatok vágása
- Gyakori vágathibák
Mappek
- Mappek létrehozása
- Bejegyzések hozzáadása és eltávolítása
- Kulcs létezésének ellenőrzése
- Mappek átlapozása
- Komplex adatot tartalmazó mappek
Struktúrák
-
Struktúrák definiálása
-
Struktúra mezők
-
Struktúrák inicializálása
-
Összetett struktúrák
-
Név nélküli struktúrák
-
Struktúra metódusok
-
JSON struktúra címkék
-
Gyakorlat: Felhasználók, termékek és alkalmazásadat modellezése struktúrákkal, vágatokkal és mappekkel
7. Feltételi logika és ciklusok
ifnyilatkozatokelseéselse if- Változódeklarációk feltételekben
forciklusok- Végtelen ciklusok
- Ciklusfeltételek
breakéscontinue- Lapozás a
rangehasználatával - Összetett ciklusok
switchnyilatkozatok- Kifejezés-alapú switchek
- Többes esetek
- Alapértelmezett esetek
- Típuskapcsolók
- Gyakorlat: Alkalmazásvalidáció és feldolgozási logika megvalósítása
8. Függvények
- Függvények definiálása
- Függvényparaméterek
- Visszatérési értékek
- Többes visszatérési értékek
- Nevezett visszatérési értékek
- Variádis függvények
- Névtelen függvények
- Függvényértékek
- Zárók (Closures)
- Rekurzió
- Függvények átvitele argumentumként
- Hibát visszatérítő függvények
- Kis, újrahasználható függvények tervezése
- Gyakorlat: Meglévő kód refaktorálása újrahasználható függvényekbe
9. Mutatók és memóriakoncepciók
- Mi az a mutató?
- Cím és dereferencia operátorok
- Mutatók és függvényparaméterek
- Mutatóvonalak
- Struktúrákra mutató mutatók
- Nullmutatók
- Mikor használjunk mutatókat?
- Érték- vs. referencia-alapú szemantika
- A Go memóriakezelésének és szemétgyűjtésének megértése
- Gyakori mutatóhibák
- Gyakorlat: Alkalmazásadat módosítása mutatók használatával
10. Webalkalmazás létrehozása Go nyelven
- A Go webes képességeinek áttekintése
- Bemutatkozás a
net/httpcsomaggal - HTTP szerver létrehozása
- HTTP kérések és válaszok
- HTTP metódusok
- Kérő URL-ek és lekérdezési paraméterek
- HTTP fejlécek
- HTTP állapotkódok
- Útválasztás alapjai
- Kezelők létrehozása
- Űrlap-adatok kezelése
- Statisztikus fájlok kiszolgálása
- Működés HTML sablonokkal
- Sablonváltozók és vezérlési szerkezetek
- Webalkalmazás strukturálása
- Gyakorlat: Alapvető Go web szerver építése
11. RESTful webes szolgáltatás építése
- REST architektúra alapjai
- API végpontok tervezése
- GET, POST, PUT, PATCH és DELETE
- Működés JSON-nal
- JSON kódolása és dekódolása
- Kérés validálása
- HTTP állapotkódok
- Hibaválaszok
- Lekérdezési paraméterek és útvonalparaméterek
- API válaszstruktúrák
- Kezelők és üzleti logika szétválasztása
- Gyakorlat: CRUD REST API építése
12. Go futtatókörnyezet, fordítás és projektfordítás
- A Go fordító megértése
- A Go fordítási folyamata
go rungo buildgo installgo test- Fordítási kapcsolók
- Környezetspecifikus konfiguráció
- Fordítás különböző operációs rendszerekhez és architektúrákhoz
- Önálló binárisok létrehozása
- Alkalmazás konfigurációjának kezelése
- Gyakorlat: Alkalmazás fordítása több platformra
13. Működés fájlokkal és a webbel
- Fájlok megnyitása és bezárása
- Fájlok olvasása
- Fájlok írása
- Könyvtárak létrehozása
- Fájlmetaadat
- Pufferelt I/O
- Működés streammel
- JSON fájlok olvasása és írása
- HTTP kliensek
- Kimenő HTTP kérések indítása
- HTTP klienshibák kezelése
- Időtúllépések és lemondások
- API válaszok feldolgozása
- Gyakorlat: Adatok lekérése egy külső API-ról és helyi mentése
14. Hiba kezelé és hibakeresés
- A Go megközelítése a hibáknak
- Hibák visszaadása függvényekből
- Hibák ellenőrzése
- Egyedi hibák létrehozása
- Hibák csomagolása
- Kontextus hozzáadása hibákhoz
errors.Iséserrors.As- Panik és visszatérés
- Mikor használjuk a
panic-et - Gyakori Go problémák hibakeresése
- Alkalmazási aktivitás naplózása
- Go hibakereső eszközök használata
- Gyakorlat: Szándékosan bevezetett alkalmazási hibák diagnózisa és javítása
15. Interfészek és absztrakció
- Mi az az interfész?
- Implíc interfész-megvalósítás
- Interfészek definiálása
- Interfész-értékek
- Üres interfészek /
any - Típus-igazolások
- Típuskapcsolók
- Mutató vs. érték alapú megvalósítások
- Kis interfészek tervezése
- Függőség-inverzsió
- Interfészek használata tesztelésre
- Alkalmazáscsúcsok csökkentése
- Gyakorlat: Interfészek bevezetése a mintawebalkalmazásba
16. Csomagok és projekt-organizálás
- Csomagok létrehozása
- Csomag-átnevezési konvenciók
- Kiexportált és nem kiexportált azonosítók
- Csomagok importálása
- Csomag inicializálása
- Alkalmazási rétegek szervezése
- Belső csomagok
- Függőségkezelés Go Modulokkal
- Szeminatikus verziónyilvántartás
- Harmadik féltől származó csomagok használata
- Körkörös függőségek elkerülése
- Karban tartható Go projektek tervezése
- Gyakorlat: Alkalmazás refaktorálása külön csomagokba
17. Párhuzamosítás Goroutine-okkal
- Mi az a párhuzamosítás?
- Goroutine-ok
- Goroutine-ok indítása
- Könynyű, párhuzamos futtatás megértése
- Szinkronizációs kihívások
- Megosztott állapot
- Felelősségi feltételek (Race conditions)
sync.WaitGrouphasználata- Mutexek és olvasási/írási mutexek
- Atomális műveletek
- Gyakorlat: Sorozatos feladat átalakítása párhuzamos feldolgozásra
18. Csatornák (Channels)
- Csatornák megértése
- Értékek küldése és fogadása
- Pufferelt vs. puffer nélküli csatornák
- Blokkoló viselkedés
- Csatornák bezárása
- Lapozás csatornákon
- Irányított csatornák
- Csatorna-alapú kommunikáció
- Select nyilatkozatok
- Időtúllépések és lemondások
- Munkáspool-minták
- Termelős/fogyasztó minták
- Gyakorlat: Párhuzamos munkarendszerek építése
19. Kontextus és kéréskezelés
- Miért fontosak a kontextusok webes alkalmazásokban?
context.Context- Kérés-szintű kontextus
- Lemondás
- Határidők
- Időtúllépések
- Kontextus terjesztése az alkalmazási rétegeken keresztül
- Adatbázis vagy HTTP műveletek lemondása
- Kontextus-miss használat elkerülése
- Gyakorlat: Kérés-lemondások és időtúllépések hozzáadása a webalkalmazáshoz
20. Go alkalmazások tesztelése
- Miért fontos az automatizált tesztelés?
- Egységtesztek írása
- A
testingcsomag - Tesztfüggvények
- Teszt-átnevezési konvenciók
- Táblázat-alapú tesztek
- Hibák tesztelése
- HTTP kezelők tesztelése
- HTTP tesztszerverek
- Teszt-rögzítők (fixtures)
- Lesújtás
- Perfomancia tesztelés (Benchmarks)
- Példat tesztek
- Interfészek tesztelése mókokkal vagy hamis elemekkel
- Gyakorlat: Tesztcsomag létrehozása a mintaalakalmazáshoz
21. Teljesítmény optimalizálás
- Go alkalmazások teljesítményének megértése
- Düföli pontok azonosítása
- CPU vs. memória teljesítmény
- Hatékony adattípusok
- Félreérthető allokációk csökkentése
- Karaktéros sorok, bájtok és puffer
- Goroutine-kezelés
- Túlzott párhuzamosítás elkerülése
- Cache-stratégiák
- Adatbázis és hálózati szempontok
- Alkalmazások profilozása
- Perfomancia tesztelés
- A Go profilozó eszközeinek használata
- Gyakorlat: Szándékosan hatékony alkalmazás profilozása és optimalizálása
22. Biztonság és robosztus webes alkalmazás-gyakorlatok
- Felhasználói bemenet validálása
- HTTP kérések biztonságos kezelése
- Gyakori webes sebezhetőségek megelőzése
- Biztonságos hiba-kezelés
- Autentikáció és autorizáció fogalmak
- Titkok és konfiguráció kezelése
- Biztonságos HTTP kommunikáció
- Érzékeny információk elkerülése naplóban
- Függőség-kezelés és frissítések
- Erőforrás-korlátok és kérés-időtúllépések
- Gyakorlat: A minta-API átvizsgálása és megerősítése
23. Alkalmazás-naplózás és figyelmettesség
- Naplózás alapjai
- Szerkezett naplózás
- Naplózási szintek
- Kérés-naplózás
- Hiba-naplózás
- Korreláció és kérés-azonosítók
- Alkalmazás-működés figyeltetése
- Alapvető metrikák
- Egészségügyi végpontok
- Éles környezeti problémák diagnózisa
- Gyakorlat: Szerkezett naplózás és egészségügyi ellenőrzések hozzáadása
24. A Go alkalmazás konténerizálása
- Miért használjunk konténereket?
- Go alkalmazások és konténerizálás
- Dockerfile írása
- Többfázisú fordítás
- Minimális futtatókép-alkalmazás építése
- Konfiguráció kezelése környezeti változókkal
- Konténer hálózat
- Alkalmazás portjainak kitétele
- Alkalmazás futtatása konténerben
- Konténerizált alkalmazás tesztelése
- Gyakorlat: A minta Go alkalmazás csomagolása éles környezetben használható konténerré
25. Telepítés
- Alkalmazás előkészítése éles környezethez
- Éles binárisok fordítása
- Környezeti konfiguráció
- Konténer-alapú telepítés
- Telepítési architektúra
- Visszafordított proxy-k
- HTTPS/TLS szempontok
- Alkalmazás-egészségügyi ellenőrzések
- Könnyű leállás
- Operációs rendszerjelek kezelése
- Go webes alkalmazások méretezése
- Horizontális vs. vertikális méretezés
- Alapvető telepítési hibakeresés
- Gyakorlat: A minta webes alkalmazás telepítése
26. Koronázó: Teljes Go webes alkalmazás
A résztvevők összekapcsolják a fogalmakat egy teljes alkalmazás fejlesztésével.
A projekt tartalmazhatja a következőket:
- Projekt inicializálása Go Modulokkal
- Csomag-organizálás
- HTTP útválasztás
- REST API végpontok
- JSON kérés- és válaszkezelés
- Bemenet-validáció
- Hibakezelés
- Interfészek
- Párhuzamos feldolgozás
- Külső API kommunikáció
- Fájl- vagy adatbázis-perszisztencia
- Automatizált tesztek
- Naplózás
- Teljesítmény-szempontok
- Konténerizálás
- Éles konfiguráció
- Telepítés
27. Visszanézés és legjobb gyakorlatok
- A Go alapszintaxisának áttekintése
- Go kódolási konvenciók
- Idiomatikus Go írás
- Kód egyszerűségének megőrzése
- Hatékony csomagtérvezés
- Hibakezelési legjobb gyakorlatok
- Interfész-tervezési elvek
- Párhuzamosítás legjobb gyakorlatai
- Tesztelési stratégiák
- Teljesítmény-szempontok
- Karban tarthatóság és olvashatóság
- Gyakori hibák, amelyeket az új Go fejlesztők elkövetnek
- Ajánlott megközelítések a Go fejlesztés folytatásához
28. Következtetés
- Főfogalmak áttekintése
- A kész webes alkalmazás áttekintése
- Kérdések és beszélgetés
- Gyakori valós világ-területek hibakeresése
- Ajánlott következő lépések a Go fejlesztéshez
- További Go könyvtárak és ökoszisztéma-erőforrások
- Toábbi lehetőségek éles környezetű Go szolgáltatások építésére
Követelmények
- A programozás általános elveinek megértése
Célcsoport
- Fejlesztők
Vélemények (5)
A képző tanár bizonyította, hogy szakértője a témának, amit sosem veszek észrevételekért természetesen. Ő nagyon hasznos információkat adott az ipari szabványokról.
Giuseppe
Kurzus - Learning Go Programming
Gépi fordítás
Nikoltam az összes gyakorlati feladat, amit elvégeztünk. Személyesen a tevékenység során tanulok legjobban, ezért nagyon hasznos volt, hogy Francesco sok gyakorlati feladatot adott. Néhány fogalom megértenése az előadás slajdjaiból nehezett nekem, de amikor végül magam is kipróbálhatom és alkalmazhatom a nyelv kulcsfontosságú jellemzőit, sokkal jobban segített a megértésben.
Adam Fitzhugh - OpticoreIT
Kurzus - Learning Go Programming
Gépi fordítás
a tempó, a képzők képessége segíteni és fenntartani annak érdekében, hogy némi nehezebb kérdéseket is felvetessenek.
Andrei Mihai - Viasat
Kurzus - Learning Go Programming
Gépi fordítás
Radu alapvető tudása és az ütem személyre való alkalmazása.
Adeel Ahmad - Coefficient Data Ltd
Kurzus - Learning Go Programming
Gépi fordítás
A tanár rugalmassága. Valóban személyre szabta a kurzust a saját speciális igényeinkhez.
Daniel Kurner - Daimler TSS
Kurzus - Learning Go Programming
Gépi fordítás