Sobes.tech
Senior

Kas ir slice un kā tas atšķiras no masīva?

sobes.tech AI

Atbilde no AI

Go valodā masīvs (array) ir struktūra ar fiksētu izmēru, kas satur vienāda tipa elementus. Masīva izmērs tiek noteikts deklarācijas laikā un tas nevar tikt mainīts programmas darbības laikā.

Sēne (slice) ir dinamiska, maināma masīva daļa. Tā ir struktūra, kas satur norādi uz masīvu, garumu un kapacitāti. Sēnes ļauj strādāt ar masīva apakšsastāvdaļām un automātiski paplašinās pēc nepieciešamības.

Galvenās atšķirības:

  • Izmērs: masīvs ir ar fiksētu izmēru, sēne — dinamiska.
  • Pārsūtīšana: masīvi tiek pārsūtīti pēc vērtības (kopēti), sēnes — pēc atsauces (norāde uz masīvu).
  • Elastība: sēne var tikt paplašināta ar append funkciju, masīvs — nē.

Piemērs:

var arr [3]int = [3]int{1, 2, 3} // ar fiksētu izmēru masīvs

var s []int = arr[0:2] // sēne, kas norāda uz daļu no masīva

s = append(s, 4) // sēne tiek paplašināta, ja nepieciešams, tiek izveidots jauns masīvs