Sobes.tech
Senior

Go-ში მასივსა და სლაის შორის რა განსხვავებაა?

sobes.tech AI

პასუხი AI-სგან

Go ენის ფარგლებში, მასივი (array) არის სტრუქტურა ფიქსირებული ზომით, რომლის ზომა განსაზღვრულია გამოყოფის დროს და ვერ იცვლება. მასივები ინახავენ ელემენტებს თანმიმდევრობით მეხსიერებაში და გადაცემისას სრულად იკოპირებიან.

სლაისი (slice) არის დინამიური, ზომით მორგებადი ტიპი, რომელიც წარმოადგენს მიმთითებელს მასივის თანმიმდევრობით მონაკვეთზე. სლაისი შეიცავს მიმთითებელს პირველ ელემენტზე, სიგრძეს და მოცულობას.

ძირითადი განსხვავებები:

  • მასივის ზომა ფიქსირებულია, სლაის — დინამიური.
  • გადაცემისას, მასივი იკოპირება, სლაისი გადაეცემა როგორც მიმთითებელი ძირითადი მასივზე.
  • სლაისი შეიძლება გაფართოვდეს (append), მასივი — არა.

მაგალითი:

var arr [3]int = [3]int{1, 2, 3} // ფიქსირებული ზომის მასივი

slice := arr[0:2] // სლაისი, რომელიც მითითებულია პირველ ორ ელემენტზე

slice = append(slice, 4) // სლაისი გაფართოვდება, შესაძლებელია ახალი ძირითადი მასივის შექმნა

ასე რომ, სლაისები სასარგებლოა დინამიური კოლექციებით მუშაობისთვის, ხოლო მასივები — ფიქსირებული მონაცემთა ნაკრებისთვის.