// +build ignore package main import "fmt" type cons struct { car string cdr interface{} } func (c cons) String() string { if c.cdr == nil || c.cdr == (cons{}) { return c.car } return fmt.Sprintf("%v %v", c.car, c.cdr) } func main() { m := map[cons]string{} c := cons{} for _, s := range []string{"life?", "with my", "I doing", "What am"} { c = cons{s, c} } m[c] = "No idea." fmt.Println(c, m[c]) }