func (d *dbCache) value(row, col int) string {
	rowId := row - d.firstRow
	if rowId >= len(d.data) {
		return ""
	}
	rowValues := d.data[rowId]
	if col >= len(rowValues) {
		return ""
	}
	return rowValues[col]
}
func (d *dbCache) value(row, col int) string {
	rowId := row - d.firstRow
	if rowId >= len(d.data) {
		return ""
	}
	rowValues := d.data[rowId]
	if col >= len(rowValues) {
		return ""
	}
	return rowValues[col]
}
func ( d * dbCache ) value ( row , col int ) string { rowId := row - d . firstRow if rowId >= len ( d . data ) { return " " } rowValues := d . data [ rowId ] if col >= len ( rowValues ) { return " " } return rowValues [ col ] }
// returns the cell value for a given col and row. Col and row are absolute
// value. But cache keeps limited number of rows to minimize memory usage.
// So, the position of the value of the cell should be calculated
// To simplify, the function just returns empty string if the cell is not
// cached. It is unlikely but can happen
returns the cell value for a given col and row . Col and row are absolute value . But cache keeps limited number of rows to minimize memory usage . So the position of the value of the cell should be calculated To simplify the function just returns empty string if the cell is not cached . It is unlikely but can happen