动态将键值映射添加到struct

时间:2018-11-05 12:27:37

标签: dictionary go prometheus

我试图弄清楚如何将map[string]string的键值对添加到我的prometheus.Labels结构中。

如果您有普罗米修斯的经验:我正在尝试动态添加标签及其值。

labelsMap := make(map[string]string)
labelsMap["nodepool"] = "default"
labelsMap["zone"] = "europe-west"

// here I'd like to add my key / value pairs from my map
containerLabels := prometheus.Labels{
    "node":      "nodename",
    "container": "foo",
    "qos":       "bar",
}
requestedContainerCPUCoresGauge.With(containerLabels).Set(containerMetric.RequestedCPUCores)

我的问题:

如何从我的containerLabels中的给定映射labelsMap动态添加键/值对?

1 个答案:

答案 0 :(得分:1)

您可以在for range上使用简单的labelsMap循环,并添加每对,例如:

containerLabels := prometheus.Labels{}
for k, v := range labelsMap {
    containerLabels[k] = v
}

或者因为prometheus.Labels只是一个简单的地图:

type Labels map[string]string

如果以后您不想修改labelsMap,也可以使用简单的类型conversion

containerLabels := prometheus.Labels(labelsMap)