> The most obvious of which is that it has only one type that fulfills the interface with no obvious means of extension. (sic)
Seems obvious to me.
type Cat struct{}
func (a Cat) Speaks() string { return "meow" }
Does this not work?
> Functions typically take concrete types instead of interface types.
Ok...? This seems like some arbitrary rule that the creators of Go claimed was a good idea, I guess. The author has offered no justification for it. In general I guess I fail to see most of the proclaimed benefits of Go, every time I read articles like this I come away favoring something like Java for anything in the application layer. I can see preferring Go to C for low-level and systems programming, but I shudder to think of what a mess the large Go codebases must look like.