func newMetricVec(desc *Desc, newMetric func(lvs ...string) Metric) *MetricVec {
	return &MetricVec{
		children:    map[uint64][]metricWithLabelValues{},
		desc:        desc,
		newMetric:   newMetric,
		hashAdd:     hashAdd,
		hashAddByte: hashAddByte,
	}
}
newMetricVec returns an initialized MetricVec. The concrete value is
returned for embedding into another struct.
package prometheus
import (
	"fmt"
	"sync"
	"github.com/prometheus/common/model"
)
type MetricVec struct {
	mtx      sync.RWMutex  
	children map[uint64][]metricWithLabelValues
	desc     *Desc
	newMetric   func(labelValues ...string) Metric
	hashAdd     func(h uint64, s string) uint64  
	hashAddByte func(h uint64, b byte) uint64
}