Go lost its identity in 1.27
- https://www.youtube.com/watch?v=WqSWZuGS9pc
- Original title: I am done with Golang
A passionate rant from a long-time Go fan. Prime loved Go precisely because it was simple, procedural and had "one way to do anything" — every codebase felt the same. New features (generics on method receivers, iterators) are eroding that, and he argues Go is having an identity crisis, turning into a worse Rust/TypeScript.
The trigger is Go 1.27 allowing generics on method receivers, enabling Rust-like `Result[T]` types with `is_ok`/`unwrap` patterns. Prime concedes the example code looks nice but argues it betrays Go's founding mantra: instead of one obvious way, you now get a cornucopia of bespoke abstractions, layers to dig through, and codebases that no longer look alike. He notes Go's generics aren't even good — you can't write a generic variadic `convert`, so you end up with `convert0/1/2/3`, something trivial in TypeScript.
His broader complaint: the same "one way" philosophy was Go's stated reason for refusing nicer error handling (no `try`, no `?`), and he actually liked the explicit verbose error handling. Now iterators hide cost (you no longer know what iteration does) and generics give you "Rust light" / "C++ light" without the payoff — if you wanted a fancy type system you'd use those languages. He praises Odin as Go's spiritual successor: package/directory- level modules, explicit overloading, control over allocations, an unabashedly simple C-like language for games/graphics that "knows what it wants to be." Go, he says, no longer does.