NOTE: I have written a few small projects in Go, so don’t assume what I am writing is expert opinion on Go. These are just my first thoughts from using the language. For the past few months, I have been writing Go. I am now considering returning to Rust, but I first want to write what I do and don’t like about Go. Things I like Concurrency Unlike most other languages, concurrency is not an afterthought in Go. Channels and Goroutines are built right into the language as first class features and are mostly a joy to work with in my experience. Go manages to avoid the famous problem of colored functions that plague a lot of other languages’ concurrency models. Additionally, Channels and select statements are in general really nice to use. It’s really hard to get concurrency right and the fact that Go has mostly Gotten concurrency right is very impressive. Type System Go’s type system is intentionally very simple and does not allow for complex inheritance trees. While Go does have struct embedding: // all methods of Animal are now implemented on Dog type Dog struct { Animal } It is different from single inheritance because you can embed multiple structs and struct embedding is fundamentally syntactic sugar. Instead of writing this: type Animal struct { ... } func (a Animal) DoSomething() { ... } type Dog struct { Animal Animal } func main() { Dog{}.Animal.DoSomething() } You write this: type Animal struct { ... } func (a Animal) DoSomething() { ... } type Dog struct { Animal } func main() { Dog{}.DoSomething() } While Dog can override DoSomething: func (d Dog) DoSomething() { ... } func main( Dog{}.DoSomething() ) The original implementation still exists: // both work Dog{}.DoSomething() Dog{}.Animal.DoSomething() NOTE: Struct embedding also includes fields not just methods Additionally, in Go a struct does not have to explicitly fulfill an interface for it to apply. This is different from most other languages, where interfaces must be implemented explicitly for them to ...
First seen: 2026-01-08 16:48
Last seen: 2026-01-08 16:48