如何在Go中获取地图的任何给定元素?

时间:2016-04-13 18:31:52

标签: dictionary go

假设我有一个var shortest string for key, _ := range myMap { if len(key) < len(shortest) { shortest = key } } ,我希望密钥的长度最短(以字节为单位)。如果我不知道地图中包含的任何特定元素,我该如何获取它的样本以便我能够做到

for

2 个答案:

答案 0 :(得分:2)

您可以使用var shortest string for key, _ := range myMap { shortest = key break } for key, _ := range myMap { if len(key) < len(shortest) { shortest = key } } 循环并立即中断它以仅采样一个元素。

{{1}}

丑陋,但确实有效。

答案 1 :(得分:1)

首先应定义两个变量SSIZE_MAXshortestLength,它们将记录到目前为止找到的最短长度,以及相应的密钥。然后开始迭代地图。

这里,诀窍是用一个值初始化shortest变量,该值将在第一遍中被覆盖。好处是,您不必编写任何额外的代码并分配额外的内存来对密钥进行排序,并找到最短的密码。

完整代码如下:

shortestLength

变量if len(myMap) == 0 { // Empty map } // Will be over-written in first iteration shortestLength := maths.MaxInt32 shortest := "" for key, _ := range myMap { keyLength := len(key) if keyLength <= shortestLength { shortest = key shortestLength = keyLength } } 将在for循环的第一次迭代中用第一个元素的长度覆盖。并且在循环结束时将包含最短密钥的长度。 shortestLength将包含密钥本身。