Sobes.tech
Junior — Middle

Фарқияти байни харита бо арзиши сифр ва слайс, ки арзиши сифр дорад, чист?

sobes.tech AI

Ҷавоб аз AI

Дар Го, харита (map) бо арзиши сифр як харита аст, ки ҳанӯз оғоз нашудааст ва баробар ба nil аст. кӯшиши навиштан ба чунин харита паника меорад.

Слайс бо арзиши сифр слайс-нил аст, ки ба массив ишора намекунад ва дарозӣ ва қобилияти 0 дорад. Онро бо бехатар истифода бурдан мумкин аст, масалан, барои хондан ё интиқол ба функсияҳо.

Фарқиятҳои асосӣ:

  • map == nil маънои онро дорад, ки харита оғоз нашудааст ва наметавонад элементҳоро қабул кунад.
  • slice == nil маънои онро дорад, ки слайс холӣ аст ва ба массив ишора намекунад, аммо барои хондан (хол хоҳад буд) ва интиқол истифода бурда мешавад.

Масал:

var m map[string]int // m == nil
// m["key"] = 1 // паника: таъин ба харитаи nil

var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // ҳоло слайс оғоз шудааст

Аз ин рӯ, харитаи nil барои навиштан мувофиқ нест, ва слайси nil барои хондан ва васеъ кардан бехатар аст.