Sobes.tech
Junior — Middle

Ի՞նչ տարբերություն կա զրոյական արժեքով քարտեզի և զրոյական արժեքով սլայսի միջև։

sobes.tech AI

Պատասխան AI-ից

Go լեզվում, զրոյական արժեքով քարտեզը (map) այն քարտեզն է, որը չի սկզբնավորվել և հավասար է nil-ին: Նման քարտեզում գրելու փորձը կհանգեցնի panic-ի:

Զրոյական արժեքով սլայսը (slice) nil-սլայս է, որը չի ցույց տալիս զանգվածին և ունի երկարություն և ծավալ 0: Կարող է անվտանգ օգտագործվել, օրինակ՝ ընթերցման կամ փոխանցման համար:

Հիմնական տարբերությունները՝

  • map == nil նշանակում է, որ քարտեզը չի սկզբնավորվել և չի կարող ընդունել տարրեր:
  • slice == nil նշանակում է, որ սլայսը դատարկ է և չի ցույց տալիս զանգվածին, բայց կարող է օգտագործվել ընթերցման և փոխանցման համար:

Օրինակ՝

var m map[string]int // m == nil
// m["key"] = 1 // panic: գրառում nil քարտեզում

var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // այժմ սլայսը սկզբնավորվել է

Այսպիսով, nil-քարտեզը չի հարմար գրելու համար, իսկ nil-սլայսը անվտանգ է ընթերցման և ընդլայնման համար։