  We describe a design for generics in Go inspired by previous work on
Featherweight Java by Igarashi, Pierce, and Wadler. Whereas subtyping in Java
is nominal, in Go it is structural, and whereas generics in Java are defined
via erasure, in Go we use monomorphisation. Although monomorphisation is widely
used, we are one of the first to formalise it. Our design also supports a
solution to The Expression Problem.
