Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Comprimento vs Capacidade | Vetores e Fatias
Introdução ao Golang

bookComprimento vs Capacidade

Podemos determinar o comprimento de um array ou de um slice utilizando a função 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

Podemos determinar a capacidade de um array ou de um slice utilizando a função cap:

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

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

O comprimento e a capacidade de um array são sempre iguais. No entanto, para um slice, a capacidade pode ser diferente do comprimento. Por exemplo, no caso em que um slice é criado a partir de um array, a capacidade é maior que o comprimento:

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

A capacidade de um slice é o número de elementos do startingIndex do slice até o final do array original do qual ele foi criado. No exemplo acima, é 6.

Lembre-se que modificar um slice também modifica o array original. Portanto, no exemplo dado, acrescentar um elemento (ou valor) ao slice atualiza essencialmente o elemento seguinte ao índice final do slice no array original. Em outras palavras, isso aumenta o tamanho do slice e atualiza os elementos do array original com base nos elementos/valores acrescentados. Isso ficará mais claro com um exemplo:

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]

A capacidade é útil para determinar quantos elementos podemos acrescentar ao segmento. Se excedermos a capacidade do segmento, a função append cria e retorna um novo segmento que não está conectado a uma parte do array original. Portanto, ele se torna desvinculado do array original.

Você pode ver o seguinte exemplo: o array original permanece inalterado, mesmo que tenhamos acrescentado mais elementos ao seu segmento:

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]

Isso aconteceu porque o slice tinha uma capacidade de 3, que ultrapassamos. Como resultado, a função append retornou um novo slice que não faz mais referência ao array original.

question mark

Qual é a sintaxe correta para adicionar um elemento z a um slice chamado alphabets?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 1.96

bookComprimento vs Capacidade

Deslize para mostrar o menu

Podemos determinar o comprimento de um array ou de um slice utilizando a função 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

Podemos determinar a capacidade de um array ou de um slice utilizando a função cap:

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

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

O comprimento e a capacidade de um array são sempre iguais. No entanto, para um slice, a capacidade pode ser diferente do comprimento. Por exemplo, no caso em que um slice é criado a partir de um array, a capacidade é maior que o comprimento:

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

A capacidade de um slice é o número de elementos do startingIndex do slice até o final do array original do qual ele foi criado. No exemplo acima, é 6.

Lembre-se que modificar um slice também modifica o array original. Portanto, no exemplo dado, acrescentar um elemento (ou valor) ao slice atualiza essencialmente o elemento seguinte ao índice final do slice no array original. Em outras palavras, isso aumenta o tamanho do slice e atualiza os elementos do array original com base nos elementos/valores acrescentados. Isso ficará mais claro com um exemplo:

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]

A capacidade é útil para determinar quantos elementos podemos acrescentar ao segmento. Se excedermos a capacidade do segmento, a função append cria e retorna um novo segmento que não está conectado a uma parte do array original. Portanto, ele se torna desvinculado do array original.

Você pode ver o seguinte exemplo: o array original permanece inalterado, mesmo que tenhamos acrescentado mais elementos ao seu segmento:

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]

Isso aconteceu porque o slice tinha uma capacidade de 3, que ultrapassamos. Como resultado, a função append retornou um novo slice que não faz mais referência ao array original.

question mark

Qual é a sintaxe correta para adicionar um elemento z a um slice chamado alphabets?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 4
some-alt