Section 15
Generics
Generics (Go 1.18+) let you write functions and types that work across multiple concrete types with full compile-time type safety. No casting, no any, no runtime type assertions.
The problem generics solve
☕ Java — pre-generics (Object) or raw types
◎ Go — pre-generics problem (same issue)
Generic function syntax — Java vs Go side by side
☕ Java — generic method
◎ Go — generic function
Generic types — type parameter on a struct
☕ Java — generic class
◎ Go — generic type
Type constraints — Java vs Go side by side
☕ Java — bounds / interfaces
◎ Go — comparable / interface / union
Real-world generic utility functions
Filter, Find, GroupBy — write once, use everywhere
☕Java generics have wildcards (
? extends T, ? super T), variance, and type erasure. Go generics have none of those. They are simpler, predictable, and fully reified (no type erasure). The trade-off is less flexibility for some advanced patterns.