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  }