Sobes.tech
Junior

Vai jūs domājat, ka Go kartes (map) būs sakārtotas?

sobes.tech AI

Atbilde no AI

Noklusējuma režīmā, iterācija pār karti Go valodā nenodrošina elementu kārtību. Kārtība var mainīties katrā pārejā. Tas ir saistīts ar to, kā tiek īstenotas iekšējās datu struktūras kartē, lai sasniegtu augstu veiktspēju.

Tomēr ir vairāki veidi, kā iegūt sakārtotu pāreju:

  1. Atslēgu kārtošana: Iegūt visus kartes atslēgas, tās sakārtot un pēc tam pāriet pa karti, izmantojot sakārtotās atslēgas.

    // Atslēgu kārtošanas piemērs
    package main
    
    import (
    	"fmt"
    	"sort"
    )
    
    func main() {
    	m := map[string]int{
    		"b": 2,
    		"a": 1,
    		"c": 3,
    	}
    
    	atslēgas := make([]string, 0, len(m))
    	for k := range m {
    		atslēgas = append(atslēgas, k)
    	}
    	sort.Strings(atslēgas) // Sakārtot virknes, ir arī sort.Ints un citas.
    
    	for _, k := range atslēgas {
    		fmt.Println(k, m[k])
    	}
    }
    
  2. Izmantot datu struktūras, kas garantē kārtību: Ja kārtība ir kritiska, var izmantot citas datu struktūras vietā kartēm vai izstrādāt savu. Piemēram, sakārtots atslēgu-vertību pāru saraksts.

Tādējādi, standarta kartes Go nav sakārtotas, bet kārtību var sasniegt ar papildu operācijām.