Opleiding: Introduction to Programming in Go
Algemene omschrijving
Introduction to Programming in Go is een training waarin je wordt meegenomen in de wereld van Go, de programmeertaal ontwikkeld door Google die uitblinkt in snelheid en efficiëntie. Als programmeertaal is Go inmiddels dé standaard voor het ontwikkelen van cloud-native applicaties. Door het unieke ontwerp biedt de programmeertaal Go zowel uitstekende prestaties als verhoogde productiviteit voor softwareontwikkelaars. Hierdoor blinkt Go uit in de wereld van hedendaagse programmeertalen.
De cursus Introduction to Programming in Go is voornamelijk ontwikkeld voor softwareontwikkelaars die zich willen verdiepen in de kern van de programmeertaal Go. Van de basisbeginselen tot geavanceerde patronen voor grootschalige applicaties, in de training Introduction to Programming in Go krijg je grondig overzicht van de mogelijkheden van Go. Daarnaast is training Introduction to Programming in Go praktisch en interactief, waardoor je stap voor stap de veelzijdigheid van Go zult ontdekken en toepassen.
Ten slotte is de training Introduction to Programming in Go zowel geschikt voor beginnende programmeurs die Go willen ontdekken als ervaren softwareontwikkelaars die hun kennis en vaardigheden uit willen breiden met Go. Of je nu een stevige basis wilt leggen in programmeren of jouw expertise uit wilt breiden, met de cursus Introduction to Programming in Go krijg je alles in handen om professional aan de slag te gaan met de programmeertaal Go!
Doelgroep
De training Introduction to Programming in Go is met name geschikt voor de volgende mensen:
- Softwareontwikkelaars die Go willen leren om efficiënte, schaalbare applicaties te ontwikkelen.
- Back-end engineers die op zoek zijn naar een kennismaking met een programmeertaal die ontworpen is voor snelheid, eenvoud en krachtige gelijktijdigheid.
- Systeembeheerders en DevOps Engineers die Go willen gebruiken als hulpmiddel, het ontwikkelen van scripts of voor infrastructuurbeheer.
- Studenten en nieuwe programmeurs die klaar zijn om hun programmeerkennis en -vaardigheden uit te breiden met een programmeertaal die afgestemd is op de hedendaagse behoeften binnen het vakgebied van softwareontwikkeling.
Leerdoelen
Door de training Introduction to Programming in Go te volgen, zul je de volgende kennis en vaardigheden verkrijgen:
- Beheer de basis van Go: Begin met de kernprincipes zoals datatypen, controlestructuren en functies, die de basis leggen voor het ontwikkelen van efficiënte en betrouwbare Go-code. Hierbij ligt de nadruk op het schrijven van Idiomatisch Go.
- Ontdek gegevensstructuren en gelijktijdigheid: Verkrijg praktische vaardigheden in de unieke datastructuren van Go, zoals slices, maps en structs. Verdiep je daarbij in de krachtige concurrency model van Go met behulp van goroutines en channels.
- Leer geavanceerde projectpatronen en architecturen: Naarmate je ontdekt hoe jij grote Go-projecten kunt organiseren, hoe jij TDD-praktijken (Test-Driven Development) kunt volgen, hoe jij afhankelijkheidsinjectie kunt implementeren en geavanceerde ontwerppatronen zoals injectie kunt implementeren en geavanceerde ontwerppatronen, zoals een zeshoekige architectuur.
- Samenwerken met andere programmeertalen: Leer een brug te slaan tussen Go en programmeertalen zoals C, waardoor het nut van Go in omgevingen met meerdere programmeertalen toeneemt en jouw vermogen om Go te integreren toeneemt met omgevingen en ontdek hoe jij Go kunt integreren met legacy code of met externe bibliotheken.
- Verleg jouw grenzen met WebAssembly (WASM): Leer te begrijpen hoe jij Go-code kunt compileren naar WebAssembly, zodat je Go-scripts uit kunt voeren binnen webomgevingen en spannende nieuwe mogelijkheden met Go-WASM interoperabiliteit.
Ten slotte zul je aan het einde van de training Introduction to Programming in Go jouw opgedane kennis en vaardigheden toe te passen om Go-scripts te ontwikkelen, te structureren en te optimaliseren. Hierdoor zul je bekwaam worden in een programmeertaal die bekend staat om zijn eenvoud, efficiëntie en veelzijdigheid in het ontwikkelen van hedendaagse softwareoplossingen.
Voorkennis
Voordat je deelneemt aan de training Introduction to Programming in Go, raden wij aan dat je ervaring hebt met andere programmeertalen zoals Python, JavaScript, C, C++ of Java. Tevens biedt de training Introduction to Programming in Go jou de basiskennis en -vaardigheden.
Door de training Introduction to Programming in Go te volgen zul je geleidelijk meer geavanceerde onderwerpen verkennen. Dit maakt de training Introduction to Programming in Go toegankelijk voor beginners en ervaren programmeurs zullen meer diepgang verkrijgen.
Onderwerpen
Dag 1: Basisprincipes van Go-programmeren
Deel 1: Overzicht van de cursus en basisprincipes van Go
- Inleiding op de cursus en doelen.
- Overzicht van de Go-taal en filosofie.
- Instellen van de Go-omgeving (installatie en configuratie).
- Ontwikkeltools kiezen en installeren.
- Inleiding op Go-pakketten.
Deel 2: Eerste stappen in Go
- Je eerste Go-programma schrijven.
- Begrip van de bouwstenen van Go.
- Gereserveerde trefwoorden en naamgevingsconventies.
- De Go-standaardbibliotheek verkennen.
- Variabelen en constanten (declaratie, levensduur en scope).
- Pointers begrijpen in Go.
Deel 3: Basisgegevens en constanten
- Overzicht van de basisgegevens in Go.
- Werken met getallen, strings en booleans.
- UTF-8 en de Unicode-basis van Go.
- Werken met strings in Go.
- Inleiding op de iota-constantegenerator.
Deel 4: Werken met collecties
- Begrip van complexe datatypes in Go.
- Arrays en slices: creatie en manipulatie.
- Maps: sleutel-waarde opslag in Go.
Deel 5: Structs in Go
- Structs begrijpen en hun gebruik.
- Letterlijke structs en gegevensbeheer met structs.
- Struct-embedding voor compositie.
- Werken met anonieme velden in structs.
Deel 6: Functies in Go
- Functies declareren en aanroepen.
- Gebruik van variadische en recursieve functies.
- Functie-objecten en anonieme functies begrijpen.
- Werken met deferred functies voor opruimen.
Dag 2: Pakketten, Modules en Foutenafhandeling
Deel 1: Pakketten en code-organisatie
- Pakketten begrijpen in Go.
- Soorten pakketten en hun gebruik.
Deel 2: Modules in Go
- Inleiding op Go-modules en hun geschiedenis.
- Principe van semantische versiebeheer.
- Eigen modules creëren en beheren.
Deel 3: Testen, Benchmarking en Profilerings in Go
- Testen in Go.
- Benchmarking in Go.
- Profilering in Go.
- Profile Guided Optimization.
Deel 4: Foutenafhandeling
- Effectieve foutenafhandeling in Go.
- Gebruik van panic en recover.
- Patronen en best practices voor foutenafhandeling.
Deel 5: Objectgeoriënteerd programmeren in Go
- Inleiding op objectgeoriënteerde principes in Go.
- Go’s benadering van OOP en wat het mist.
- Structs en pointer-ontvangers als alternatieven.
- Data hiding en encapsulation.
Deel 6: Interfaces en contracten
- Interfaces creëren en gebruiken om contracten af te dwingen.
- Interface-satisfactie en type-aannames.
- Gebruik van interface-switches voor flexibele code.
Deel 7: Generics in Go
- Concept van Generics.
- Generics gebruiken in de standaardbibliotheek.
Deel 8: I/O en Netwerken
- Bestandsoperaties en bestandshandling in Go.
- JSON-serialisatie en -marshalling.
- Een HTTP-server bouwen in Go.
- Inleiding op het ontwikkelen van RESTful API's.
Deel 9: Templating in Go
- Werken met Go-templating voor dynamische inhoud.
Dag 4: Concurrency en Geavanceerde Concepten in Go
Deel 1: Concurrency in Go
- Inleiding tot concurrency-concepten.
- Gebruik van goroutines, waitgroups en channels.
- Gebufferde vs. ongebufferde kanalen.
- Werken met meerdere kanalen en datastroombeheer.
- Gebruik van mutexen en atomaire operaties voor kritieke secties.
- Patronen en best practices voor concurrency.
Deel 2: Iterators in Go
- Concept van Iterators.
- Iterators in de standaardbibliotheek.
- Eigen iterator schrijven.
Deel 3: Test-Driven Development (TDD) in Go
- Inleiding op de TDD-principes en -praktijken.
- Tests schrijven met het testing-pakket van Go.
- Testreeksen structureren en testen van edge cases.
- Gebruik van tabelgestuurde tests in Go.
Deel 4: Dependency Injection en Ontwerppatronen
- Inleiding op de principes van dependency injection.
- Dependency injection implementeren in Go.
- Veelvoorkomende ontwerppatronen in Go, zoals singleton, factory en adapter.
- Projecten organiseren voor schaalbaarheid en onderhoudbaarheid.
Deel 5: Organisatie van een Go-project
- Structureren van een grootschalig Go-project: pakketten, modules en mappenstructuur.
- Hexagonale architectuur (Ports en Adapters).
- Beheer van dependencies met Go-modules en vendoring.
- Best practices voor codebeoordeling en refactoring.
Deel 6: C Code aanroepen vanuit Go
- Inleiding op cgo: schrijven van C-bindings in Go.
- C-bibliotheken importeren en Go-wrappers maken.
- Geheugenbeheer en foutenafhandeling met cgo.
- Voorbeelden van het integreren van C-bibliotheken in Go.
Deel 7: Go Code aanroepen vanuit C
- Go-functies exporteren voor gebruik in C.
- Gebruik van cgo met statische en gedeelde bibliotheken.
- C headers creëren vanuit Go-code.
- Voorbeeld: Go-modules integreren in C-applicaties.
Deel 8: Inleiding op WebAssembly
- Overzicht van WebAssembly en gebruikscasussen.
- Waarom WebAssembly gebruiken met Go.
- Go compileren naar WebAssembly (WASM).
- Interactie met JavaScript vanuit WebAssembly Go-code.
- Opzetten en testen van een basis Go-WASM-applicatie binnen een webomgeving.