func WithConverterFor(fieldname string, c FieldConverter) FramestructOption {
	return func(cr *converter) {
		cr.converters[fieldname] = c
	}
}
WithConverterFor configures a FieldConverter for a field with the name
fieldname. This converter will be applied to fields _after_ the name structag
is applied.
package framestruct
import (
	"errors"
	"fmt"
	"reflect"
	"sort"
	"strings"
	"time"
	"github.com/grafana/grafana-plugin-sdk-go/data"
)
const frameTag = "frame"
type converter struct {
	fieldNames []string
	fields     map[string]*data.Field
	tags       []string
	anyMap     bool
	col0       string
	maxLen     int
	converters map[string]FieldConverter
}
func ToDataFrame(name string, toConvert interface{}, opts ...FramestructOption) (*data.Frame, error) {
	cr := &converter{
		fields:     make(map[string]*data.Field),
		tags:       make([]string, 3),
		converters: make(map[string]FieldConverter),
	}
	for _, o := range opts {
		o(cr)
	}
	return cr.toDataframe(name, toConvert)
}
func ToDataFrames(name string, toConvert interface{}, opts ...FramestructOption) (data.Frames, error) {
	framer, ok := toConvert.(data.Framer)
	if ok {
		return framer.Frames()
	}
	frame, err := ToDataFrame(name, toConvert, opts...)
	if err != nil {
		return nil, err
	}
	return []*data.Frame{frame}, nil
}
type FieldConverter func(interface{}) (interface{}, error)
type FramestructOption func(cr *converter)