Go lacks pattern matching & abstract data types
Go lacks exceptions, and instead uses error codes everywhere
Actually, Go supports one kind of exception, but calls it a panic. You can catch an exception, but Go calls it recovering. You can write "finally" blocks that run whether the function is exited by an exception or normally, but Go calls them deferred functions, and they run in reverse order from how they're written
The select statement is implemented as about 700 lines of runtime code. You can almost feel the performance decrease every time you use one.
Goroutine leaks, where a goroutine loses all its ways of communicating with others, can leak whole stacks of memory that can't be garbage-collected
Almost nothing in this list can be fixed, because of the Go 1 compatibility promise. Until Go 2.0, that is, but that may never happen
@voker57 всё действительно так плохо? думал, что этот язык идеален для написания асинхронщины, а тут, вон, и горутины текут, и селект, говорят, ебаный