code: func SliceToString(ss []string, andor string) string {
  	l := len(ss)
  	if l == 0 {
  		return ""
  	}
  	if l == 1 {
  		return ss[0]
  	}
  	if l == 2 {
  		if andor == "." {
  			tmp := strings.Title(ss[1][:1]) + ss[1][1:]
  			return fmt.Sprintf("%s%s %s", ss[0], andor, tmp)
  		}
  		return fmt.Sprintf("%s %s %s", ss[0], andor, ss[1])
  	}
  	var ret string
  	// TODO handle andor == "."
  	for i, s := range ss {
  		if i == l-2 {
  			ret += fmt.Sprintf("%s %s", s, andor)
  		} else if i == l-1 {
  			ret += " " + s
  		} else {
  			ret += s + ", "
  		}
  	}
  	return ret
  }
docs: // SliceToString converts a slice of strings into a natural-language list with
  // appropriately placed commas and a custom and/or separator.