No description
  • Go 97.9%
  • HTML 2.1%
Find a file
Feiko 1f57d1202f
All checks were successful
Build and Release PDFs / build (push) Successful in 1m7s
beef up concurrency, generics and modern-stdlib exercises
Concurrency gains fan-out/fan-in PokeAPI fetching, a shared context
deadline step, and a 5-worker pool that catches the Kanto dex. Generics
reshaped around generic functions: union constraints with tilde, Map
with inference, the Garage step, and Filter. Modern stdlib now acts on
the carapp (slog in AddCar, slices/cmp on []Car) and adds a custom
iter.Seq iterator step. Solutions updated and verified with -race.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-09 23:13:49 +02:00
.claude beef up concurrency, generics and modern-stdlib exercises 2026-06-09 23:13:49 +02:00
.forgejo/workflows guess that one survived the rename 2026-06-07 14:01:04 +02:00
.vscode chore: minor formatting fix in launch.json 2026-05-24 16:34:42 +02:00
archive moved stuff to archive, added readme, added love examples 2026-05-24 16:32:42 +02:00
articles My first commit 2026-05-14 22:44:46 +02:00
books moved stuff to archive, added readme, added love examples 2026-05-24 16:32:42 +02:00
build feat: implement step-by-step structure in solutions and add testing framework 2026-06-07 11:50:32 +02:00
demos rewrite CLI appendix around a Pokedex CLI (dex) 2026-06-09 23:09:15 +02:00
examples moved stuff to archive, added readme, added love examples 2026-05-24 16:32:42 +02:00
solutions beef up concurrency, generics and modern-stdlib exercises 2026-06-09 23:13:49 +02:00
src beef up concurrency, generics and modern-stdlib exercises 2026-06-09 23:13:49 +02:00
tutorials My first commit 2026-05-14 22:44:46 +02:00
.gitattributes fix: improve student zip packaging and ci build robustness 2026-05-24 16:34:16 +02:00
.gitignore feat: add Go color theme and redesign preamble slides 2026-05-23 14:29:21 +02:00
go.work draft cli exercises 2026-06-09 22:05:22 +02:00
go.work.sum draft cli exercises 2026-06-09 22:05:22 +02:00
README.md really added readme 2026-05-24 16:33:02 +02:00

Go Programming Courseware

Welcome to the Go Programming course! This repository contains the essential materials for your learning journey, including demonstrations, exercises, solutions, and reference materials.

Repository Structure

Here is an overview of the key directories and files available to you:

📄 Course Documents

  • PRG350-Go-Programming.pdf: The primary course slides and handbook.
  • PRG350-Go-Programming-Exercises.pdf: The workbook containing all course exercises and assignments.

💻 Code & Demos

  • demos/: A comprehensive set of demonstrations organized by topic (e.g., 01-go-intro, 06-concurrency). These folders contain executable examples that illustrate key Go concepts discussed in class.
  • solutions/: Reference solutions for the course exercises. Use these to check your work or if you need a hint.
  • examples/: Curated examples from well-known Go resources like Go by Example, Learn Go with Tests, and Ardan Labs training.

📖 Learning Materials

  • articles/: A collection of informative articles and papers covering various Go topics, from basic syntax to advanced concurrency patterns. Available in both PDF and Word formats.
  • tutorials/: Step-by-step guides on specific Go features such as Modules, Generics, Reflection, and Testing.
  • books/: Recommended reference books (PDF) for deeper study.

Getting Started

Prerequisites

  • Go: Ensure you have Go installed (version 1.26 or later is recommended).
  • Editor: We recommend using Visual Studio Code with the Go extension. GoLand and neovim + whatever you feel comfy with is fine too!

Workspace Configuration

This repository uses Go Workspaces, managed by the go.work file in the root. This allows you to work across multiple modules (demos, solutions, etc.) seamlessly.

  1. Open the root of this repository in your editor.
  2. The editor should automatically recognize the workspace and provide IntelliSense across all modules.
  3. To run a demo, navigate into its directory in your terminal and use go run . (for main packages) or run the specific .go file.

Happy Coding!