Matt Williamson
2 min readOct 28, 2015

--

It sounds like you have a lack of computer science knowledge or maybe just lack of experience with C.

First up is… lack of generics?? Interfaces are generics.

  1. Slice Manipulations: Slices are a way to access arrays. They are not linked lists. You would have do do similar hoop-jumping in other languages that aren’t interpreted. If you want lists like Python or PHP, use the list package https://golang.org/pkg/container/list/ . I do, however, wish we had negative indices for slice access and I know that there is no good reason they removed them. They were originally in the language.
  2. Nil Interfaces: You are trying to explain how Go is not straight-forward with a very not-so-straight-forward example. What is the real world use case? What on Earth were you trying to do when you found this “problem”??
  3. Variable Shadowing: Learn about scope. This isn’t PHP. Mutating global state inside of nested blocks leads to bugs. Probably 25% of bugs I’ve seen are due to poorly scoped code.
  4. Can’t pass []struct: Intentional. Personally, I would not pass slices of interfaces anyway — after all you haven’t described lists of methods on structs, you’ve described just the struct itself. The reason is because Go was designed to not hide expensive operations. Converting one object in the list happens in O(1) time. Converting a slice of n objects happens in O(n) time. Not hiding potentially expensive operations is a good thing for predictable performance.
  5. Range by value loops: Seriously? If you wanted to loop over a list of pointers, then start off with a slice of pointers…. Otherwise just access via index instead of value.
  6. Compiler Rigidity: Based on the fact you don’t embrace mechanisms to remove cruft from your project, I can only guess you want cruft in your project.
  7. Go Generate: Never touched the stuff. Not even tempted to. With a title like “Why Go is a poorly designed language”, I would expect 7 problems with the language, not auxiliary tools.

All in all, I think this article is just link-bait.

--

--