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) // слайс кеңейет, мүмкүн жаңы негизги массив түзүлөт
Мындайча айтканда, слайсылар динамикалык топтомдор менен иштөө үчүн пайдалуу, ал эми массивдер — так маалымат топтомдору үчүн ылайыктуу.