Middle
Какво ще покаже програмата при итерация върху карта?
sobes.tech AI
Отговор от AI
В Go редът на итерация върху map не е определен и може да се променя при всяко изпълнение на програмата. Това се дължи на факта, че map-овете в Go са реализирани с помощта на хеш таблици, и за сигурност и непредсказуемост редът на обход е умишлено рандомизиран.
Пример:
package main
import "fmt"
func main() {
m := map[string]int{"a": 1, "b": 2, "c": 3}
for k, v := range m {
fmt.Println(k, v)
}
}
При всяко изпълнение изходът може да бъде различен, например:
b 2
a 1
c 3
или
c 3
b 2
a 1
Ако е необходим подреден изход, трябва да се съберат ключовете в срез, да се сортират и да се итерира по сортираните ключове.