code: func NewGaugeVec(opts GaugeOpts, labelNames []string) *GaugeVec {
  	desc := NewDesc(
  		BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
  		opts.Help,
  		labelNames,
  		opts.ConstLabels,
  	)
  	return &GaugeVec{
  		metricVec: newMetricVec(desc, func(lvs ...string) Metric {
  			if len(lvs) != len(desc.variableLabels) {
  				panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, lvs))
  			}
  			result := &gauge{desc: desc, labelPairs: makeLabelPairs(desc, lvs)}
  			result.init(result) // Init self-collection.
  			return result
  		}),
  	}
  }
docs: // NewGaugeVec creates a new GaugeVec based on the provided GaugeOpts and
  // partitioned by the given label names.