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
appendfunkciju, 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