You&#x27;re pretty spot on with the io.Reader&#x2F;Writer idea. In Plan9 everything is a file, thus meaning that - potentially - everything implements a read&#x2F;write capacity. If everything implements a read&#x2F;write capacity and is designed to be interacted with as such over a unified protocol, such as 9P in Plan9, you end with a system that is interactive via files alone, leading to a high level of abstraction where the only concern is reading and writing, leaving communication concerns an afterthought. Go and Plan9 both operate with the network in mind. Plan9 can leverage namespacing and its file servers to export more or less all of the system, or import however much is desired of another. Go adopts this simplicity in mind, providing ways to operate logically to leave communication between things (network, channels, etc) as some form of a lesser concern.<p>As I mentioned in another comment, a lot of nomenclature and idiomaticism is derived from Plan9 in Go.<p><a href="http:&#x2F;&#x2F;man.cat-v.org&#x2F;plan_9&#x2F;2&#x2F;dial" rel="nofollow">http:&#x2F;&#x2F;man.cat-v.org&#x2F;plan_9&#x2F;2&#x2F;dial</a><p><a href="http:&#x2F;&#x2F;man.cat-v.org&#x2F;plan_9&#x2F;2&#x2F;thread" rel="nofollow">http:&#x2F;&#x2F;man.cat-v.org&#x2F;plan_9&#x2F;2&#x2F;thread</a><p><a href="http:&#x2F;&#x2F;man.cat-v.org&#x2F;plan_9&#x2F;2&#x2F;print" rel="nofollow">http:&#x2F;&#x2F;man.cat-v.org&#x2F;plan_9&#x2F;2&#x2F;print</a>