An excerpt from the repository, fetched Nov 13, 2026.
Read the project’s introduction
What's this
This repository is a list of articles that complain about golang's imperfection.
Motivation
Seems like complaining about go's flaws is becoming a trend. Any newbie must have a chance to read all the go-is-bad arguments before they go too far. So here it is.
What it's for
This repo is not aimed to offend or insult someone (at least not more than each author does it in its article), especially golang itself, its authors and the community. It is for educational purpose only. Any contributor can have an absolutely different point of view.
I don't think anyone would deny that go has weaknesses: it certainly has. But how do you know, is it really a language design flaw or is it just you, doing something completely wrong? This list here to help you quickly answer the question.
How to use it
You're writing some code. And suddenly you understand you need something that language can't give you. You go here and check if you're the one with that issue or not. If it's a common issue, it'll be here. Then you decide what to do: choose another tool for your task or go find a better solution or a workaround.
The List
https://cowlark.com/2009-11-15-go/ (David Given, 2009)
c-style
poor design
no constructors
no user-type iteration
new and make instead of one
stuck in 70's
no OOP
too simple / lack of syntactic sugar
https://dzone.com/articles/i-don%E2%80%99t-much-get-go (Jon Davis, 2010)
no language interoperability (only C)
no versioning model
no OOP
has pointers
no semicolons at line endings
no this
no function/operator overloading
no exceptions
https://uberpython.wordpress.com/2012/09/23/why-im-not-leaving-python-for-go/ (Yuval Greenfield, 2012)
error handling
stuck in 70's
panic instead of exceptions
http://www.darkcoding.net/software/go-lang-after-four-months/ (Graham King, 2012)
un-googlable name
stuck in 70's
no exceptions
is compiled
too young
http://ridiculousfish.com/blog/posts/go_bloviations.html (ridiculousfish, 2012)
c-style
no unused imports
bad unicode support
no asserts
http://magicmakerman.blogspot.ru/2013/07/why-googles-go-programming-language.html (Magic Maker Man, 2013)
no OOP
no asserts
has pointers
weird mascot (gopher)
http://how-bazaar.blogspot.ru/2013/04/the-go-language-my-thoughts.html (Tim Penhey, 2013)
error handling
inconvenient range
no generics
http://corte.si/posts/code/go/go-rant.html (Aldo Cortesi, 2013)
too opinionated
http://blog.mattbasta.com/things_that_make_me_sad_in_go.html (Matt Basta, 2014)
project layout is bad
can't import packages relatively
different build approaches
no sugar for slices
lack of basic data structures
https://rule1.quora.com/Golang-Not-yet (Jordan Zimmerman, 2014)
no decent IDE
GOPATH is a mess
pointers are a mess
upper-case/lower-case scoping is bad
hidden types
immature GC
hard to extend
no exceptions
no generics
bad dependency management
http://yager.io/programming/go.html (Will Yager, 2014)
no generics
no function/operator overloading
nil as a failure marker
type inference is too simple
no immutables
no pattern matching
https://www.upguard.com/blog/our-experience-with-golang (Mark Sheahan, 2014)
no decent IDE
error handling
unexpected variable shadowing
no generics
not-so-obvious slices behaviour
http://dtrace.org/blogs/wesolows/2014/12/29/golang-is-trash/ (Keith Wesolowski, 2014)
the worst compiler toolchain ever
psuedointellectual arrogance of Rob Pike and everything he stands for
confusing and undebuggable
http://www.yinwang.org/blog-cn/2014/04/18/golang (Wang Yin, 2014)
confusing/stupid syntax
immature toolchain
immature GC
no generics
multiple return values have no type checking
cumbersome interface
goroutine is not original and revolutionary
defer is abused
stuck in Unix thinking
summary: not elegant as Python, not strong as Java
https://kaushalsubedi.com/blog/2015/11/10/golang-sucks-heres-why/ (Kaushal Subedi, 2015)
no generics
slow json parsing
bad dependency management
no subpackages
http://spaces-vs-tabs.com/4-weeks-of-golang-the-good-the-bad-and-the-ugly/ (Freddy Rangel, 2015)
not-so-obvious slices behaviour
error handling
hard to test, hard to mock
http://www.evanmiller.org/four-days-of-go.html (Evan Miller, 2015)
no unused imports
too opinionated
poor std math lib
weird mascot (gopher)
http://nomad.so/2015/03/why-gos-design-is-a-disservice-to-intelligent-programmers/ (Gary Willoughby, 2015)
too simple / lack of syntactic sugar
no generics
bad dependency management
stuck in 70's
http://tmikov.blogspot.com/2015/02/you-dont-like-googles-go-because-you.html (Tzvetan Mikov, 2015)
designed for stupid people
too verbose
no ternary operator
no macros or templates
can't change hash function in maps
unwieldy to code new collections
no function overloading
can't declare/validate implements interface
no virtual functions
case defined exports is bad
http://valuedrivenit.blogspot.ru/2015/12/to-go-language-is-mess.html (Cliff Berg, 2015)
un-googlable name
confusing/stupid syntax
polymorphism is broken
compilation rules are too confining
designed for stupid people
package mechanism is broken
http://blog.goodstuff.im/golang (David Pollak, 2015)
no immutables
too simple / lack of syntactic sugar
confusing/stupid syntax
too opinionated
error handling
stuck in 70's
no generics
upper-case/lower-case scoping is bad
no map/reduce/filter
http://byrd.im/go-is-poor/ (Ian Byrd, 2015)
not-so-obvious slices behaviour
nil interfaces are not entirely nil
unexpected variable shadowing
no first-class support of interfaces
questionable compiler rigidity
go generate is a quirk
https://blog.plan99.net/modern-garbage-collection-911ef4f8bd8e#.62yek82xg (Mike Hearn, 2016)
misleading marketing around garbage collector
garbage collector is nothing new; concurrent mark/sweep from the '70s
garbage collector requires implicit (hidden) tradeoffs
garbage collector optimized for pause times at the cost of other desirable gc features
http://www.jtolds.com/writing/2016/03/go-channels-are-bad-and-yo
Read the full README on GitHub