Sobes.tech
Junior

Myslíš si, že mapy v Go budú zoradené?

sobes.tech AI

Odpoveď od AI

Podľa predvoleného nastavenia neznamená iterácia cez mapu v Go poradie prvkov. Poradie sa môže meniť pri každom prechode. Je to spôsobené spôsobom, akým sú implementované vnútorné dátové štruktúry pre mapu, aby sa dosiahla vysoká výkonnosť.

Existuje však niekoľko spôsobov, ako získať zoradený prechod:

  1. Zoradiť kľúče: Získať všetky kľúče mapy, zoradiť ich a potom prejsť mapu pomocou zoradených kľúčov.

    // Príklad zoradenia kľúčov
    package main
    
    import (
    	"fmt"
    	"sort"
    )
    
    func main() {
    	m := map[string]int{
    		"b": 2,
    		"a": 1,
    		"c": 3,
    	}
    
    	keys := make([]string, 0, len(m))
    	for k := range m {
    		keys = append(keys, k)
    	}
    	sort.Strings(keys) // Zoradiť reťazce, existuje aj sort.Ints, atď.
    
    	for _, k := range keys {
    		fmt.Println(k, m[k])
    	}
    }
    
  2. Použitie dátových štruktúr, ktoré garantujú poradie: Ak je poradie kritické, môžete použiť iné dátové štruktúry namiesto map alebo implementovať vlastnú. Napríklad, zoznam párov kľúč-hodnota, ktorý sa udržiava v zoradenom stave.

Takto štandardné mapy v Go nie sú zoradené, ale poradie je možné dosiahnuť pomocou ďalších operácií.