columnize.go
func widthsFromLines(config *Config, lines []string) []int {
	widths := make([]int, 0, 8)

	for _, line := range lines {
		elems := elementsFromLine(config, line)
		for i := 0; i < len(elems); i++ {
			l := runeLen(elems[i].(string))
			if len(widths) <= i {
				widths = append(widths, l)
			} else if widths[i] < l {
				widths[i] = l
			}
		}
	}
	return widths
}
func widthsFromLines(config *Config, lines []string) []int {
	widths := make([]int, 0, 8)

	for _, line := range lines {
		elems := elementsFromLine(config, line)
		for i := 0; i < len(elems); i++ {
			l := runeLen(elems[i].(string))
			if len(widths) <= i {
				widths = append(widths, l)
			} else if widths[i] < l {
				widths[i] = l
			}
		}
	}
	return widths
}
func widthsFromLines ( config * Config , lines [ ] string ) [ ] int { widths := make ( [ ] int , 0 , 8 ) for _ , line := range lines { elems := elementsFromLine ( config , line ) for i := 0 ; i < len ( elems ) ; i ++ { l := runeLen ( elems [ i ] . ( string ) ) if len ( widths ) <= i { widths = append ( widths , l ) } else if widths [ i ] < l { widths [ i ] = l } } } return widths }
// widthsFromLines examines a list of strings and determines how wide each
// column should be considering all of the elements that need to be printed
// within it.
widthsFromLines examines a list of strings and determines how wide each column should be considering all of the elements that need to be printed within it .