4x 4h sessions
instructor: about
- Introduction
- Motivation and Landscape
- Hello World
- Task: "helloworld"
- History
- Timeline of events
- More First Programs
- Entry point
- Importing Code
- Visibility (public, private)
- Language Overview
- Basic Types
- Variable Declarations
- Control Structures: if, for, switch
- More Types
- Slices
- Maps
- Interfaces
- Structural Typing
- Small interfaces
- Variants (basic, embedding, general, ref/spec)
- Go OOP?
- Is Go object oriented? FAQ
- Error Handling
- Custom Error Types
- Wrapping and unwrapping errors
- Project Layout
- typical structure
- naming recommendations
- import path and resolution
- Go modules
- mixing public and private code
- versioning libraries
- IO
- working with files
- readers and writers
- Serialization
- struct tags
- JSON
- XML
- Testing Go Code
- Unit Test
- Subtests
- Benchmarks
- Testcontainers
- Concurrency
- classic and CSP style
- goroutines
- channels
- select
- the
sync
package - error handling
- helpers:
errgroup
- HTTP clients
- clients and transport
- standard clients, third party clients
- HTTP servers
- handlers
- router, e.g. gorilla/mux
- testing
- Database access
- package db, db/sql
- database drivers
- sqlx helper
- asciitable
- btcprice
- datareader
- generator
- genreverse
- helloworld
- infreader
- linkchecker
- randomimg
- rot13reader
- switch
- timer
- vardecl
- wordfreq
Follow up:
- Linkchecker
- Project layout, modules
- add library
- add service
- Services
- Misc