Sobes.tech
Senior

Go'da массив менен слайс арасындагы айырма эмне?

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) // слайс кеңейет, мүмкүн жаңы негизги массив түзүлөт

Мындайча айтканда, слайсылар динамикалык топтомдор менен иштөө үчүн пайдалуу, ал эми массивдер — так маалымат топтомдору үчүн ылайыктуу.