code: func (m *DbMap) TableFor(i interface{}) *TableMap {
  	var t reflect.Type
  	v := reflect.ValueOf(i)
  start:
  	switch v.Kind() {
  	case reflect.Ptr:
  		// dereference pointer and try again;  we never want to store pointer
  		// types anywhere, that way we always know how to do lookups
  		v = v.Elem()
  		goto start
  	case reflect.Slice:
  		// if this is a slice of X's, we're interested in the type of X
  		t = v.Type().Elem()
  	default:
  		t = v.Type()
  	}
  	if t.Kind() == reflect.Ptr {
  		t = t.Elem()
  	}
  	return m.TableForType(t)
  }
docs: // FIXME: This is a poor interface.  Checking for nils is un-go-like, and this
  // function should be TableFor(i interface{}) (*TableMap, error)
  // FIXME: rewrite this in terms of sqlx's reflect helpers
  // TableFor returns any matching tables for the interface i or nil if not found.
  // If i is a slice, then the table is given for the base slice type.