This repository contains lecture slides for Course Go.
- Course [slides]
- Introduction
- Requirements
- Overview
- Introduction [slides | exercise]
- Introduction to Go
- IDEs & Editors
- Installing Go
- Running Go
- Project basics
- Resources
- Fundamentals #1 [slides | exercise]
- Built-in types
- Variables
- Control flow
- Functions
- Custom types
- Pointers
- Fundamentals #2 [slides | exercise]
- Interfaces
- Errors
- Arrays
- Slices
- Maps
- Range
- Concurrency & parallelism [slides | exercise]
- Goroutines
- Runtime
- Channels
- Select
- Related packages
- Advanced #1 [slides | exercise]
- Generics
- Packages
- Testing
- Advanced #2 [slides | exercise]
- Benchmarks
- Optimizations
- CGo
- Unsafe & Reflect
- REST APIs [slides | exercise]
- JSON
- HTTP
- REST API
- HTTP package
- Routers & Web frameworks
- OpenAPI
- Templating
- Containers [slides | exercise]
- Containerization
- Docker
- Kubernetes
- Databases [slides | exercise]
- SQL
- RDBMSs
- Migrations
- sql
- sqlx
- sqlc
- GORM
- Infrastructure [slides | exercise]
- CI/CD
- Infrastructure
- GCP
- Observability [slides | exercise]
- Health
- Metrics
- Logs
- Traces
- OpenTelemetry
The slides are made using the go present syntax which has its own tooling.
The project maintains an up-to-date deployed version of the slides on lectures.course-go.dev.
The only disadvantage is that this version does not allow you to run the Go code presented on the slides for security reasons. To run the Go code, you must run the slides locally.
You can use an already pre-built container image with lecture slides.
docker run -p "3999:3999" \
ghcr.io/course-go/lectures:latest \
present -http=:3999
Or you can run the slides locally using the Go present CLI.
git clone git@github.com:course-go/lectures.git
Install Go if you do not have it yet.
Install the CLI present tool using Go install:
go install golang.org/x/tools/cmd/present@latest
This installs the present executable into your $GOPATH/bin directory if GOPATH is set or the $HOME/go/bin directory otherwise.
Make sure that the directory with the present executable is in your $PATH.
After that, running the present tool is simple:
present
Alternatively, you can specify on which address the server should listen:
present http=:8080
A webserver is run on the specified address. You can now preview the slides using your favourite web browser.
Some of the lecture slides are based on the GoCourse project developed under Red Hat. The GoCourse is licensed under CC BY-SA 4.0 DEED license, which this repository respects and therefore shares.