code: func (t *Table) PrintTo(result io.Writer) error {
  	t.rowHeight = make([]int, len(t.rows)+1)
  
  	rowIndex := 0
  	if !t.headerPrinted {
  		// row transformer header row
  		err := t.calculateMaxSize(transHeader, rowIndex, t.headers)
  		if err != nil {
  			return err
  		}
  		rowIndex++
  	}
  
  	for _, row := range t.rows {
  		// table is row transformer itself, for content rows
  		err := t.calculateMaxSize(t, rowIndex, row)
  		if err != nil {
  			return err
  		}
  		rowIndex++
  	}
  
  	rowIndex = 0
  	if !t.headerPrinted {
  		err := t.printRow(result, transHeader, rowIndex, t.headers)
  		if err != nil {
  			return err
  		}
  		t.headerPrinted = true
  		rowIndex++
  	}
  
  	for row := range t.rows {
  		err := t.printRow(result, t, rowIndex, t.rows[row])
  		if err != nil {
  			return err
  		}
  		rowIndex++
  	}
  
  	t.rows = [][]string{}
  	return nil
  }
docs: // PrintTo is the core functionality for printing the table, placing
  // the formatted table into the writer given to it as argument. The
  // exported Print() is just a wrapper around this which redirects the
  // result into CF data structures.
  // Once a table has been printed onto a Writer, it cannot be printed
  // again.