📄️ Pointer vs Value Receivers: Method Sets and Interface Satisfaction
The precise rules around Go method sets, when pointer vs value receivers matter, and the interface satisfaction gotchas that bite even experienced Go developers.
📄️ Interfaces Under the Hood: itab, Dynamic Type, and Dynamic Value
How Go implements interfaces at the binary level — the two-word iface structure, itab caching, and what happens during dynamic dispatch.
📄️ Empty Interface and Type Assertions: Cost and Pitfalls
What any/interface{} really is, the performance cost of type assertions and type switches, and when to avoid empty interfaces.
📄️ Generics in Go: Type Parameters, Constraints, and Instantiation
Go 1.18 introduced generics. Here's how type parameters and constraints work, when to use generics, and the performance implications.
📄️ Embedding vs Inheritance: Promotion, Ambiguity, and Zero Values
Go has no inheritance, but embedding provides method and field promotion. Here's exactly how it works, when it's useful, and the traps to avoid.