"I feel like writing about the Go programming language (or 'Golang') today, so instead today's topic is computer stuff. For the record, the language I've programmed the most in has been Python, so that’s the perspective I'm analyzing it from." Some good and bad things about Go.

All of Example's methods have to be in the same package as Example. Ideally, Example should be in its own package. Ideally, an object shouldn't require more than 1 file to specify. Ideally, there should be some documentation.

So bad architecture/design choices aside... There's no reason a grep can't take care of this, but it's usually just as fast to compile (and it gives better information.)

Bad architecture will always exists, this is because not all developers are created equal.

Besides, you don't have to read all the code. You can easily pick up Example's methods by scanning function declarations.

Or you can just look at the top of the file for something like "implements".

The design choice of inferring interfaces is a sound one. It allows you to add/remove/restructure interfaces without having to modify your objects. Yes, you have to remember more or get an IDE, but it makes life much easier, especially in the prototyping stages of development when interfaces aren't yet stable.

For example, in Go if you are using someone else's objects, you can still create interfaces that those objects implement, without needing to modify those objects (you don't even need their source code.)

For example, in Go if you are using someone else's objects, you can still create interfaces that those objects implement, without needing to modify those objects (you don't even need their source code.)