func (g *gauge) Value() int64 {
	return atomic.LoadInt64(&g.value)
}
Value returns the gauge's current value.
package metrics
import "sync/atomic"
type Gauge interface {
	Snapshot() Gauge
	Update(int64)
	Value() int64
}
func GetOrRegisterGauge(name string, r Metrics) Gauge {
	return r.GetOrRegister(name, NewGauge).(Gauge)
}
func NewGauge() Gauge {
	return &gauge{0}
}
type GaugeSnapshot int64
func (g GaugeSnapshot) Snapshot() Gauge { return g }
func (GaugeSnapshot) Update(int64) {
	panic("Update called on a GaugeSnapshot")
}
func (g GaugeSnapshot) Value() int64 { return int64(g) }
type gauge struct {
	value int64
}
func (g *gauge) Snapshot() Gauge {
	return GaugeSnapshot(g.Value())
}
func (g *gauge) Update(v int64) {
	atomic.StoreInt64(&g.value, v)
}