Go vs .NET Comparison
Comparing Go and C#/.NET across design philosophy, runtime, performance, and ecosystem
Go Getting Started - Setup & Hello World
Installing Go, the go command, editor setup, and writing your first program
Modules and Packages
Understanding go.mod, packages, visibility rules, and internal packages
Basic Syntax
Variable declarations, constants, control flow, zero values, functions, multiple returns, and defer
Types and Structs
struct, type definitions, embedding, value semantics, and differences from class/record
Methods and Interfaces
Method receivers, implicit interface satisfaction, and designing small interfaces
Error Handling
The error type, wrapping, errors.Is/As, and when to use panic/recover
Pointers and Memory Management
Pointers, pass-by-value, escape analysis, and GC basics
Slices, Maps, and Arrays
Arrays, slices, maps, range loops, and differences from List/Dictionary
Generics
Type parameters, constraints, comparable, and differences from C# generics
Goroutines and Channels
Goroutines, channels, select, and conceptual differences from async/await
Concurrency Patterns and Synchronization
sync.WaitGroup, Mutex, errgroup, worker pools, and the race detector
The context Package
Cancellation, timeouts, and propagating request-scoped values
Standard Library Overview
Overview of key standard packages such as fmt, io, encoding/json, time, and os
Building Web APIs with net/http
net/http, ServeMux, middleware, choosing chi/gin/echo, and mapping to ASP.NET Core
Dependency Injection and Configuration
Constructor injection, Wire/fx, and environment-variable-based configuration
Data Access
database/sql, sqlc, GORM, ent, and mapping to EF Core/Dapper
Testing in Go
The testing package, table-driven tests, testify, mocking, and benchmarks
Logging and Observability
log/slog, structured logging, OpenTelemetry, and metrics
Toolchain and Static Analysis
Developer tools such as gofmt, go vet, golangci-lint, and go generate
Build and Deploy
Single binaries, cross-compilation, Docker multi-stage builds, and CI/CD
Performance and Profiling
pprof, trace, benchmarks, and reducing allocations
Project Layout and Architecture
Standard directory layout, applying Clean/Hexagonal Architecture, and idiomatic Go design