research!rsc: Go Data Structures: Interfaces - one of the really interesting features in Go: the interfaces. Go interfaces have a decisive advantage over Scala traits, Java interfaces, C++ multiple inheritance: they are only defined as an interface, but implementing structures do not have to inherit from these interfaces. Interfaces can also be defined for code that is not present in the source and comes from somewhere completely different. I wish Scala had something like this with traits. That would be a big step closer to duck typing with compile-time checking. "I want to see a thing here that supports the following functions with the following signatures" is exactly what duck typing is all about - it's just that in Python or Smalltalk or other dynamic languages, it usually only crashes at runtime.