Not to detract from your point of vastly different things, but you picked a bad example. You add a method to the prototype:
File::close = ->
Et voilà, all Files are closeable. File::close = ->
Et voilà, all Files are closeable.So, to revise my point: with "proper" classes (i.e. Java or C++) this wouldn't be possible, or at least more complicated and not the way to do things. Classes are not the ultimate solution and it's a good thing that Go tries a different approach to OOP.