FAQ

That's super mean!

That's not really a question, is it?

More seriously, this page is meant to be light-hearted. The Go developers know that generic types and functions are a oft-requested feature, and they have been working very hard on producing a design that works and that will stand the test of time, together with the community. I am convinced that the end result will be great.

What are Generics and why are they hard?

See Why Generics? (by Ian Lance Taylor from the Go team) for an introduction, including code examples.

The reason generics are hard is that they are a feature that can destroy a language if done wrong. A bad implementation may fracture the community and destroy the simplicity and ease of use we have been enjoying. Compile times or binary sizes might increase to the point of being a nuisance.

That's why it is vital to come up with a design in the original spirit of Go. This is a much more difficult task than just copying what has been done in Java or other languages. As an example, the first iterations of the design included "type contracts", whose syntax was widely criticized. The syntax has gone through multiple variants, and there is an ongoing experiment to see if the concepts of interfaces and type contracts can be unified.

Who made this?

My name is Benny Siegert (aka @bentsukun). I also have a blog, at bentsukun.ch.