github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/talks/2015/tricks/cons.go (about) 1 // +build ignore 2 3 package main 4 5 import "fmt" 6 7 type cons struct { 8 car string 9 cdr interface{} 10 } 11 12 func (c cons) String() string { 13 if c.cdr == nil || c.cdr == (cons{}) { 14 return c.car 15 } 16 return fmt.Sprintf("%v %v", c.car, c.cdr) 17 } 18 19 func main() { 20 m := map[cons]string{} 21 c := cons{} 22 for _, s := range []string{"life?", "with my", "I doing", "What am"} { 23 c = cons{s, c} 24 } 25 m[c] = "No idea." 26 fmt.Println(c, m[c]) 27 }