No description
  • Go 97.9%
  • HTML 2.1%
Find a file
Feiko Wielsma aa22fb084c
All checks were successful
Build and Release PDFs / build (push) Successful in 1m6s
Merge branch 'master' of ssh://git.feikowielsma.nl:222/SpiralTrain/Go-Programming
2026-06-12 14:28:48 +02:00
.claude Merge branch 'master' of ssh://git.feikowielsma.nl:222/SpiralTrain/Go-Programming 2026-06-12 14:28:48 +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 Add AGENTS.md, document bun install prerequisite, fix Presentation-Template path 2026-05-28 17:12:38 +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
AGENTS.md Add AGENTS.md, document bun install prerequisite, fix Presentation-Template path 2026-05-28 17:12:38 +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 Add AGENTS.md, document bun install prerequisite, fix Presentation-Template path 2026-05-28 17:12:38 +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.

Trainer Build Commands

First-time setup — install the shared build dependencies once per machine:

bun install --cwd ../Presentation-Template/build

Without this step the build fails with DOMMatrix is not defined (missing @napi-rs/canvas).

Then build and serve:

bun run --cwd build build                  # compile slides to PDF
bun run --cwd build build -- --exercises   # compile exercises to PDF
bun run --cwd build serve                  # live Marp server, auto-reloads on save
bun run --cwd build lint                   # check slides for style and layout issues

The build scripts live in ../Presentation-Template/build/; that sibling repo must be cloned and its dependencies installed (see above) before any build command will work.


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!