You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: workqueue.go
    path of file: ./repos/kubernetes-ingress/internal/metrics/collectors
    
    the code of the file until where you have to start completion: package collectors

import (
	"github.com/prometheus/client_golang/prometheus"
	"k8s.io/client-go/util/workqueue"
)

// WorkQueueMetricsCollector collects the metrics about the work queue, which the Ingress Controller uses to process changes to the resources in the cluster.
// implements the prometheus.Collector interface
type WorkQueueMetricsCollector struct {
	depth        *prometheus.GaugeVec
	latency      *prometheus.HistogramVec
	workDuration *prometheus.HistogramVec
}

// NewWorkQueue
    
func NewWorkQueueMetricsCollector(constLabels map[string]string) *WorkQueueMetricsCollector {
	const workqueueSubsystem = "workqueue"
	latencyBucketSeconds := []float64{0.1, 0.5, 1, 5, 10, 50}

	return &WorkQueueMetricsCollector{
		depth: prometheus.NewGaugeVec(
			prometheus.GaugeOpts{
				Namespace:   metricsNamespace,
				Subsystem:   workqueueSubsystem,
				Name:        "depth",
				Help:        "Current depth of workqueue",
				ConstLabels: constLabels,
			},
			[]string{"name"},
		),
		latency: prometheus.NewHistogramVec(
			prometheus.HistogramOpts{
				Namespace:   metricsNamespace,
				Subsystem:   workqueueSubsystem,
				Name:        "queue_duration_seconds",
				Help:        "How long in seconds an item stays in workqueue before being processed",
				Buckets:     latencyBucketSeconds,
				ConstLabels: constLabels,
			},
			[]string{"name"},
		),
		workDuration: prometheus.NewHistogramVec(
			prometheus.HistogramOpts{
				Namespace:   metricsNamespace,
				Subsystem:   workqueueSubsystem,
				Name:        "work_duration_seconds",
				Help:        "How long in seconds processing an item from workqueue takes",
				Buckets:     latencyBucketSeconds,
				ConstLabels: constLabels,
			},
			[]string{"name"},
		),
	}
}