HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ksimka
go-is-not-good
Go2015–2021
ksimka / go-is-not-good

go-is-not-good

A curated list of articles complaining that go (golang) isn't good enough

20Distinct people
22Mentions
1Explicit recommenders
3.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A curated list of articles complaining that go (golang) isn't good enough

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

I LOVE the pattern-matching/deconstruction/guards stuff. It eliminates SO much boilerplate logic. Just the function head of an Elixir function eliminates a dozen input…

pmarreck used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year22 dated mentions

Observed mentions: 2015-12-10 10:33:00 UTC to 2021-06-25 11:00:14 UTC.

02462015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 4 mentions; 4 submissions, 0 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 3 mentions; 3 submissions, 0 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 6 mentions; 4 submissions, 2 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC440
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC330
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC642
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC312
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC413
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101

From the project README

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

What Hacker News says

22 sources
Huh? What does Haskell's (lack of) adoption have to do with any merits of Go? PHP, Visual Basic (perhaps?) and Javascript have even better adoption than Go, if you want to go down that route. If anything, you should have asked about the prospects of OCaml, shouldn't you? (Spoiler alert: they are grimmer than Haskell's.) Mostly, Go is full of wasted opportunities. It would have perhaps been a worthwhile language had they come up with Go instead of C in the 1970s. https://github.com/ksimka/go-is-not-good is a good summary. I would suggest having a look at D as an example of what an evolution of C could look. An evolution with fewer wasted opportunities.
In The Next Step for Generics
pmarreck·Jul 25, 2017Recommendation phrase
I LOVE the pattern-matching/deconstruction/guards stuff. It eliminates SO much boilerplate logic. Just the function head of an Elixir function eliminates a dozen input validation and assignment lines in most other languages. It wouldn't be nearly as spectacular if it didn't pervade the entire language, though (for example, I'm sure you could get partway there in many other languages using a DSL) Same thing with immutability. If it doesn't pervade the entire language, it feels slapped-on, and you basically lose most (all?) of the guarantees (like removing an entire class of bugs caused by mutability). I saw what you saw in Go, but in doing my homework, I also saw an astonishing amount of ugliness[1][2][3], and additionally I took a bit of actual offense to the core philosophy of Go's design as stated by Rob Pike himself[4][5] so I am betti
Read the rest
ng on (hoping for?) spectacular Elixir adoption I guess lol, as my current and all future projects for the foreseeable future will be in Elixir. About the only wart I've seen so far in Elixir is the pin operator[6], but that was necessary to preserve the name-rebinding ability in a pattern-matching context, and it stops seeming like a wart fairly quickly, once you realize why it's necessary. [1] https://anvaka.github.io/common-words/#?lang=go makes it seem like 50% of the day-to-day code in the language is error-checking due to the lack of exceptions [2] https://github.com/ksimka/go-is-not-good [3] http://byrd.im/go-is-poor/ [4] http://nomad.so/2015/03/why-gos-design-is-a-disservice-to-in... [5] I'm actually a fan of Plan9 and appreciate Rob Pike's work on that [6] https://stackoverflow.com/questions/27971357/what-is-the-pin...
In Elixir 1.5 released

Showing the 15 most recent of 22 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.