func (cur *Cursor) SetStringAt(column string, value string) {
	cur.txn.bufferFor(column).PutString(commit.Put, cur.idx, value)
}
SetStringAt updates a specified column value for the current item. The actual operation
will be queued and executed once the current the transaction completes.
package column
import (
	"fmt"
	"github.com/kelindar/column/commit"
)
func (txn *Txn) bufferFor(columnName string) *commit.Buffer {
	for _, c := range txn.updates {
		if c.Column == columnName {
			return c
		}
	}
	buffer := txn.owner.txns.acquirePage(columnName)
	txn.updates = append(txn.updates, buffer)
	return buffer
}
func (txn *Txn) cursorFor(columnName string) (Cursor, error) {
	c, ok := txn.columnAt(columnName)
	if !ok {
		return Cursor{}, fmt.Errorf("column: specified column '%v' does not exist", columnName)
	}
	return Cursor{
		column: c,
		update: txn.bufferFor(columnName),
		Selector: Selector{
			txn: txn,
		},
	}, nil
}
type Selector struct {
	idx uint32       
	txn *Txn         
	col *Collection  
}
func (cur *Selector) columnAt(column string) (*column, bool) {
	if cur.txn != nil {
		return cur.txn.columnAt(column)
	}
	return cur.col.cols.Load(column)
}
func (cur *Selector) ValueAt(column string) (out interface{}) {
	if c, ok := cur.columnAt(column); ok {
		out, _ = c.Value(cur.idx)
	}
	return
}
func (cur *Selector) StringAt(column string) (out string) {
	if c, ok := cur.columnAt(column); ok {
		out, _ = c.String(cur.idx)
	}
	return
}
func (cur *Selector) FloatAt(column string) (out float64) {
	if c, ok := cur.columnAt(column); ok {
		out, _ = c.Float64(cur.idx)
	}
	return
}
func (cur *Selector) IntAt(columnName string) (out int64) {
	if c, ok := cur.columnAt(columnName); ok {
		out, _ = c.Int64(cur.idx)
	}
	return
}
func (cur *Selector) UintAt(column string) (out uint64) {
	if c, ok := cur.columnAt(column); ok {
		out, _ = c.Uint64(cur.idx)
	}
	return
}
func (cur *Selector) BoolAt(column string) bool {
	if c, ok := cur.columnAt(column); ok {
		return c.Contains(cur.idx)
	}
	return false
}
type Cursor struct {
	Selector
	update *commit.Buffer  
	column *column         
}
func (cur *Cursor) Index() uint32 {
	return cur.idx
}
func (cur *Cursor) Value() (out interface{}) {
	out, _ = cur.column.Value(cur.idx)
	return
}
func (cur *Cursor) String() (out string) {
	out, _ = cur.column.String(cur.idx)
	return
}
func (cur *Cursor) Float() (out float64) {
	out, _ = cur.column.Float64(cur.idx)
	return
}
func (cur *Cursor) Int() int {
	out, _ := cur.column.Int64(cur.idx)
	return int(out)
}
func (cur *Cursor) Uint() uint {
	out, _ := cur.column.Uint64(cur.idx)
	return uint(out)
}
func (cur *Cursor) Bool() bool {
	return cur.column.Contains(cur.idx)
}
func (cur *Cursor) Delete() {
	cur.txn.deleteAt(cur.idx)
}
func (cur *Cursor) Set(value interface{}) {
	cur.update.PutAny(commit.Put, cur.idx, value)
}
func (cur *Cursor) SetAt(column string, value interface{}) {
	cur.txn.bufferFor(column).PutAny(commit.Put, cur.idx, value)
}
func (cur *Cursor) SetString(value string) {
	cur.update.PutString(commit.Put, cur.idx, value)
}