Aula 36
Como Usar append para Adicionar Elementos no Final de um Pedaço na Linguagem Golang
Summary
# Resumo da Aula
## Introdução
Na aula de hoje, aprendemos a adicionar elementos a slices em Go utilizando a função `append`.
## Definindo um Slice
- Começamos criando um slice de strings chamado `nomes`, inicializado como um slice novo com zero elementos.
## Usando a Função Append
- Para adicionar elementos ao slice, usamos a função `append`.
- Exemplo: para adicionar o nome "João", utilizamos:
```go
nomes2 := append(nomes, "João")
- É importante notar que
append
não modifica o slice original, mas retorna um novo slice.
Adicionando Vários Elementos
- Podemos adicionar múltiplos elementos separando-os por vírgulas:
nomes2 := append(nomes2, "Ana", "Mateus", "Rogério")
Gerenciando Capacidade e Comprimento
- O comprimento (
length
) e capacidade (capacity
) dos slices podem ser verificados e são impactados pela funçãoappend
. - Quando não há espaço suficiente para adicionar novos elementos,
append
aloca mais espaço no array subjacente, aumentando a capacidade.
Importante
- O slice original não é alterado e as alterações são realizadas em um novo slice que pode ser atribuído a uma nova variável ou à mesma, sobrescrevendo o valor anterior.
Conclusão
Na aula, revisamos como a função append
é usada para adicionar elementos, como a capacidade e comprimento dos slices funcionam, e a importância de entender que o slice original não é modificado.
Até a próxima!
Video Transcript
Olá pessoal, na esta alunza vamos aprender a adicionar elementos a pedaços.
Se você começa a tiver um pedaço que quiser adicionar elementos no final desse pedaço,
por exemplo, a gente vai usar a função append, tá?
Então vamos lá, vamos supor que a gente tem esse...
Vamos começar com um pedaço inicial aqui, vamos dizer assim,
uma pedaça aqui de... Vamos dizer nomes, né?
Vou dizer var nomes.
Vai ser um pedaço de string, um vetor de string.
Então esse slice aqui vai ser o que? Um new slice.
Lembra? Aquele slice que valorou zero é new, né?
Porque a gente só declarou e não definiu nada ali, né?
Não definiu nenhum array subjacente.
Então, vamos fazer o seguinte, como é que a gente adiciona um...
Vou botar nomes aqui antes de mais nada.
Como é que a gente adiciona elementos, né?
Esse pedaço aqui, go run append.go aqui para você ver que não tem nada.
Então para poder fazer isso, a gente vai usar a função append, tá?
Para acrescentar, adicionar, inserir elementos, tá?
No final, da array.
Então vamos ver aqui.
Por exemplo, se eu quiser adicionar o nome aqui de juão a essa...
Esse é o sublixo de nomes.
Você pode dizer primeiro o nome da variável,
seguir do segundo argumento que vai ser o valor, tá?
Vamos dizer juão, tá?
Aí esse cara aqui vai fazer o seguinte, tá?
Ele vai pegar o que pedaço que já tem no pedaço,
vai adicionar a juão no final e vai te dar um novo pedaço, tá?
Então vamos dizer nomes dois, tá?
Para você ver aqui, se eu dar o append...
Eu não usei ainda.
Deixa eu dar o outro println aqui.
Ah, deu erro porque eu não tinha utilizado a variável em Go
se você não usar a variável.
Ele vai reclamar, tá?
Então olha aqui na primeira linha que vai ser o println de nomes.
Note que nomes permaneceu, faziam quando a gente deu println.
Eu dei o append nomes com juão, mas isso não modifica o pedaço original, né?
Tem nada.
Mas o nomes dois agora tem o juão, tá bom?
Então vamos fazer isso de novo?
Vamos adicionar mais um?
Vamos dizer nomes dois igual append, nomes dois, maria.
Agora o que acontece aqui?
Ele vai pegar nomes dois que tem valor só do juão e vai no final adicionar a maria.
Vai gerar um novo pedaço e esse novo pedaço vai ser redefinido na mesma variável, nomes dois.
E ele vai aparecer aqui lá na nomes dois, juão e maria, tá bom?
Então você pode ficar adicionando, adicionando, adicionando dessa maneira, então,
dinamicamente ele vai ter número de elementos dinâmicos, né?
Se fosse um array dinâmico.
Mas agora, o que acontece com o length e a capacidade desses pedaços?
Vamos ver aqui.
Vou fazer aqui o fmt, printlf.
Eu quero imprimir a length e a capacidade de nomes dois.
Então vou dizer percentual d para length,
os nomes dois e o outro percentual d que vai corresponder a capa dos nomes dois.
Agora eu vou dizer length para poder saber qual aqui é e capa.
Vou botar o barro n para ter uma nova linha.
Vamos ver no que dá aqui.
Então, vamos começar do começo?
Eu quero comentar, tá? Essas duas linhas vou adicionar barra a barra
para o computador ignorar essas linhas, tá?
Duas barras para poder fazer o comentário na linguagem Go.
Então essas linhas não serão executadas.
Então, primeiramente, eu também vou comentar nomes dois que não existem mais
porque a gente tá comentado.
Desculpa, deixa eu dar o...
Nomes aqui primeiro, em vez de nomes dois.
Vou dar o length e o capa de nomes.
Vai ser uma new string, uma new slice, tá?
Slice new.
Então vamos ver no que dá.
A gente espera que seja o quê?
O variável de nomes é declarado como pedaço de string.
Como a gente não definiu no valor,
ele vai usar o valor zero do pedaço que é new.
Agora, o pedaço new tem length zero e capacidade zero.
Tá? Tá aí.
Pronto, agora vamos ver nomes dois quando a gente dá o append, João.
O que é que acontece?
Dá nomes dois aqui, nomes dois aqui.
Então...
Não, pois o print é além dos nomes dois.
Tá, e agora o nomes dois, agora tem...
Ele pegou o nome, que é um pedaço new.
Adicionou, João.
Note que o length virou um, capacidade virou um.
Isso porque o append, ele vai fazer o trabalho pra você
de pegar aquela array subjacente, tá?
E vai expandir pra poder alocar espaço necessário
e suficiente pra você poder adicionar um novo elemento, tá?
Nesse caso, ele pegou e adicionou a capacidade aqui de um
e tem um comprimento de um, tá?
Que é o João, esse pedaço.
Agora, vamos ver o que acontece quando a gente dá o append da Maria.
Olha aqui.
Então, o que é que vai acontecer?
Então, o append, ele vai pegar nomes dois, que só tem João,
vai só na Maria, ao final.
Agora, tem um comprimento de dois, esse pedaço.
Mas aí, não vai dar certo porque o cap é um, né?
Então, ele tá sem espaço.
Então, ele vai pegar, a array subjacente vai alocar mais espaço
pra poder, ele poder pôa Maria lá.
Então, você vai notar que o cap vai aumentar, tá?
Além que vai virar dois, obviamente, mas o cap vai aumentar, tá?
Vamos ver.
Alvei.
Tá? O cap virou dois, nesse caso.
Agora, vamos adicionar mais um aqui.
Vamos ver.
Agora, eu quero te mostrar uma coisa.
Nomes dois, mesma coisa igual, atende.
Nomes dois, que tem o João e Maria nesse caso, nesse ponto.
Agora, eu posso adicionar também, não só um elemento, mais vários.
É só pôr aqui, separar de vírgula, tá?
Como os outros argumentos.
Por exemplo, eu vou tá Ana, tá Mateus, repor de Ante.
Ele lá, Rogério.
Vamos ver.
Vai adicionar três elementos aqui em sequência.
A, pedaço que já tem João e Maria, tá?
Então, esses caras vão aparecer no final daquela lista.
Vamos ver o que acontece.
Então, você espera que o length, o comprimento seja o quê?
Seja 5, né? Porque João e Maria é 2, mais Ana, Mateus e Rogério que é 3.
2 mais 3 é 5.
Mas o quê? Por que será?
Tá?
Nesse caso, ele aumentou, aumentou o quê para 5 para poder mazenar.
Para poder ter espaço para Ana, para Mateus e Rogério, tá?
Tá bom?
Então, esse é o append.
Vamos dar a revisada.
A gente aprendeu essa função aqui append, para poder adicionar elementos ao final de um slice.
Essa inserção, tá?
Ele...
A race subjacente.
Se não tiver espaço, ele sempre vai alocar mais espaço na race subjacente, por isso que o cap vai mudar.
Quando você der uma olhada no novo slice.
Lembra que o cap vai mudar?
Quando você der uma olhada no novo slice.
Lembre-se de que quando você usa append, ele não vai modificar o slice original, né?
Ele vai pegar e criar um novo pedaço que você pode reparecer, né?
Então, não há mudança na variável aqui que você passe, não vai ser modificado.
Você vai pegar algo novo, um vetor novo, que você...
Aí pode armazenar em outra variável, ou na mesma, se você quiser, a subscrever, tá?
Escrever por cima da... Já tem.
Nesse caso, a gente fez os nombres dois, ficamos escrevendo por cima do valor que já tinha antes.
Tá bom?
Por essa aula é só.
E até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: