Вы должны сначала определить две переменные shortestLength
и 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
}
}
Переменная shortestLength
будет чрезмерно написано с длиной первого элемента в первой итерации нашего цикла. И в конце цикла будет содержать длину кратчайшего ключа. И shortest
будет содержать сам ключ.
Возможно, я не понимаю вопроса; почему бы вам не попробовать образец кода, который вы предоставили? –
@ william.taylor.09 Это самое короткое. – EMBLEM