By the way, this is covered by in Donovan & Kernighan's new book The Go 
Programming Language.  On pages 197 and 198 of the first edition, they describe 
an interface Expr, representing an expression, then five concrete types that 
satisfy that interface and contain different sorts of expressions and sub 
expressions.  Since they all implement the Expr type, you can write a method 
that can receive and return any or all of them.

However, there are some subtleties which can trip you up.  Once you start using 
interfaces rather than concrete types, you are pretty quickly forced into using 
pointers rather than objects.  Go does a pretty good job of hiding some of the 
details of this, but not a complete job.

Interfaces are also crucial to a lot of testing strategies, because using them 
allows you to easily mock up objects with the values that you need for your 
tests.

Unfortunately, this means that somebody new to Go has to get their head around 
quite a few tricky ideas before they can do anything useful.  They are all 
explained in the book, but you need to read the relevant sections carefully, do 
a few experiments and then read them again and again until it becomes clear.

The great thing about Kernighan's writing style is that he says everything he 
needs to say exactly once and using the minimum of words.  The thing that often 
causes his readers problems is that he says everything he needs to say exactly 
once and using the minimum of words.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to