Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Довжина проти Місткості | Масиви та Зрізи
Вступ до Golang

bookДовжина проти Місткості

Можна визначити довжину масиву або зрізу за допомогою функції len:

index.go

index.go

copy
12345
randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 } fmt.Println(len(randomNumbers)) // Output: 7 numbersSlice := randomNumbers[2:7] fmt.Println(len(numbersSlice)) // Output: 5

Можна визначити місткість (capacity) масиву або зрізу за допомогою функції cap:

randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 }
fmt.Println(cap(randomNumbers)) // Output: 7

numbersSlice := randomNumbers[2:7]
fmt.Println(cap(numbersSlice)) // Output: 5

Довжина та місткість масиву завжди однакові. Однак для зрізу місткість може відрізнятися від довжини. Наприклад, коли зріз створюється з масиву, місткість буде більшою за довжину:

index.go

index.go

copy
1234
randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(len(numbersSlice)) // Output: 2 fmt.Println(cap(numbersSlice)) // Output: 6

Ємність зрізу — це кількість елементів від startingIndex зрізу до кінця початкового масиву, з якого він був створений. У наведеному вище прикладі вона дорівнює 6.

Пам’ятайте, що зміна зрізу також змінює початковий масив. Тому у наведеному прикладі додавання елемента (або значення) до зрізу фактично оновлює елемент, який знаходиться поруч із кінцевим індексом зрізу у початковому масиві. Іншими словами, це збільшує розмір зрізу та оновлює елементи початкового масиву відповідно до доданих елементів/значень. Це стане зрозуміліше на прикладі:

index.go

index.go

copy
12345
randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(randomNumbers) // Output: [1 4 5 7 9 10 12] numbersSlice = append(numbersSlice, 20, 30, 40) fmt.Println(randomNumbers) // Output: [1 4 5 20 30 40 12]

Ємність корисна для визначення, скільки елементів можна додати до зрізу. Якщо перевищити ємність зрізу, функція append створює та повертає новий зріз, який не пов’язаний із частиною початкового масиву. Таким чином, він стає відокремленим від початкового масиву.

У наступному прикладі видно: початковий масив залишається незмінним, навіть якщо до його зрізу було додано більше елементів:

index.go

index.go

copy
12345678
numbers := [] int { 1, 2, 3, 4 } numSlice := numbers[1:3] fmt.Println(numbers) // Outputs: [1 2 3 4] fmt.Println(numSlice) // Outputs: [2 3] fmt.Println(cap(numSlice)) // Outputs: 3 numSlice = append(numSlice, 9, 10) fmt.Println(numSlice) // Outputs: [2 3 9 10] fmt.Println(numbers) // Outputs: [1 2 3 4]

Це сталося тому, що зріз мав місткість 3, яку ми перевищили. У результаті функція append повернула новий зріз, який більше не посилається на початковий масив.

question mark

Який правильний синтаксис для додавання елемента z до зрізу з назвою alphabets?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain more about how the `append` function works with slices?

What happens if I modify a slice after exceeding its capacity?

Can you provide an example showing the difference between modifying a slice within its capacity and after exceeding it?

Awesome!

Completion rate improved to 1.96

bookДовжина проти Місткості

Свайпніть щоб показати меню

Можна визначити довжину масиву або зрізу за допомогою функції len:

index.go

index.go

copy
12345
randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 } fmt.Println(len(randomNumbers)) // Output: 7 numbersSlice := randomNumbers[2:7] fmt.Println(len(numbersSlice)) // Output: 5

Можна визначити місткість (capacity) масиву або зрізу за допомогою функції cap:

randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 }
fmt.Println(cap(randomNumbers)) // Output: 7

numbersSlice := randomNumbers[2:7]
fmt.Println(cap(numbersSlice)) // Output: 5

Довжина та місткість масиву завжди однакові. Однак для зрізу місткість може відрізнятися від довжини. Наприклад, коли зріз створюється з масиву, місткість буде більшою за довжину:

index.go

index.go

copy
1234
randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(len(numbersSlice)) // Output: 2 fmt.Println(cap(numbersSlice)) // Output: 6

Ємність зрізу — це кількість елементів від startingIndex зрізу до кінця початкового масиву, з якого він був створений. У наведеному вище прикладі вона дорівнює 6.

Пам’ятайте, що зміна зрізу також змінює початковий масив. Тому у наведеному прикладі додавання елемента (або значення) до зрізу фактично оновлює елемент, який знаходиться поруч із кінцевим індексом зрізу у початковому масиві. Іншими словами, це збільшує розмір зрізу та оновлює елементи початкового масиву відповідно до доданих елементів/значень. Це стане зрозуміліше на прикладі:

index.go

index.go

copy
12345
randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(randomNumbers) // Output: [1 4 5 7 9 10 12] numbersSlice = append(numbersSlice, 20, 30, 40) fmt.Println(randomNumbers) // Output: [1 4 5 20 30 40 12]

Ємність корисна для визначення, скільки елементів можна додати до зрізу. Якщо перевищити ємність зрізу, функція append створює та повертає новий зріз, який не пов’язаний із частиною початкового масиву. Таким чином, він стає відокремленим від початкового масиву.

У наступному прикладі видно: початковий масив залишається незмінним, навіть якщо до його зрізу було додано більше елементів:

index.go

index.go

copy
12345678
numbers := [] int { 1, 2, 3, 4 } numSlice := numbers[1:3] fmt.Println(numbers) // Outputs: [1 2 3 4] fmt.Println(numSlice) // Outputs: [2 3] fmt.Println(cap(numSlice)) // Outputs: 3 numSlice = append(numSlice, 9, 10) fmt.Println(numSlice) // Outputs: [2 3 9 10] fmt.Println(numbers) // Outputs: [1 2 3 4]

Це сталося тому, що зріз мав місткість 3, яку ми перевищили. У результаті функція append повернула новий зріз, який більше не посилається на початковий масив.

question mark

Який правильний синтаксис для додавання елемента z до зрізу з назвою alphabets?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 4
some-alt