Sobes.tech
Senior

Koja je razlika između niza i seka u Go?

sobes.tech АИ

Одговор од АИ

U jeziku Go, niz (array) je struktura fiksne veličine, čija se veličina određuje prilikom deklaracije i ne može se menjati. Nizovi čuvaju elemente redom u memoriji i pri prosleđivanju funkciji se kopiraju u celosti.

Seč (slice) je dinamički, promenljivog veličine tip koji predstavlja referencu na sekvencijalni deo niza. Seč sadrži pokazivač na prvi element, dužinu i kapacitet.

Ključne razlike:

  • Veličina niza je fiksna, seč je dinamički.
  • Pri prosleđivanju, niz se kopira, dok se seč prosleđuje kao referenca na osnovni niz.
  • Seč se može proširiti (append), niz ne.

Primer:

var arr [3]int = [3]int{1, 2, 3} // niz fiksne veličine

slice := arr[0:2] // seč koji referiše na prva dva elementa niza

slice = append(slice, 4) // seč se proširuje, moguće je kreirati novi osnovni niz

Tako, seče su korisni za rad sa dinamičkim kolekcijama, dok su nizovi pogodni za fiksne skupove podataka.