Aprenda a trabalhar com ponteiros usando Golang

  Рет қаралды 14,997

Full Cycle

Full Cycle

3 жыл бұрын

Nesse vídeo você entenderá tudo que você precisa saber para trabalhar com ponteiros utilizando a linguagem Go.
→ Veja nossa playlist sobre Golang
• Go Lang do Zero
👇
▪ Clique no botão vermelho, INSCREVA-SE aqui no canal e ative as notificações 🛎para o youtube te avisar dos novos conteúdos por aqui.
E não esquece de deixar seu 👍nos vídeos. Isso nos ajuda a saber se você tá curtindo, beleza?

→ Baixe nosso livro sobre Docker:
Acesse: fullcycle.com.br/
→ Siga-nos no Instagram:
/ devfullcycle
→ Participe de nosso Canal no Telegram:
t.me/devfullcycle
→ Assine nosso Podcast:
fullcycle.com.br/categoria/po...

Пікірлер: 51
@GlauciaLemos
@GlauciaLemos 6 ай бұрын
Excelente explicação. Ganhei 20 minutos de conhecimento e didática com uma temática que é difícil de compreender! Obrigada!
@zotarelli91
@zotarelli91 2 ай бұрын
Wesley explicando é muito didático, eu estudei e executei algumas manutenções em códigos com ponteiros em 2011 e 2012.. Agora estou fazendo curso e lembrei o quão difícil foi naquela época aprender kkk.. obrigado pela explicação 🫂
@videosemusica7962
@videosemusica7962 Жыл бұрын
Em termos de programação esse é o professor mais didático que já vi, explica tudo pausadamente e de uma forma tão simples que consigo entender facilmente a mensagem passada, continue assim, parabéns!!!
@lucasmaciel4527
@lucasmaciel4527 2 ай бұрын
Grande aula, professor!!
@matheuspolli6710
@matheuspolli6710 2 жыл бұрын
Me senti voltando pro colégio uns 23 anos atrás. Que saudade de fazer coisas simples assim. Parabéns pelo trabalho.
@mailsonmacedo0
@mailsonmacedo0 Жыл бұрын
Ótima explicação de ponteiros!
@katianemiranda1231
@katianemiranda1231 2 жыл бұрын
Showw
@CaioCesarPS
@CaioCesarPS Жыл бұрын
Eu já tinha entendido um pouco como funcionava o ponteiro mas com esse video ficou muito mais claro. valeu
@EvertondeCastrofatec
@EvertondeCastrofatec 9 ай бұрын
Valeu fullcycle
@itamarribeiro9325
@itamarribeiro9325 Жыл бұрын
Muito boa explicação, principalmente no uso prático
@joseduarte3489
@joseduarte3489 Жыл бұрын
ótimo video!
@joaopacheco357
@joaopacheco357 2 жыл бұрын
Vlw man, manjava de ponteiro mas queria entender melhor como lidar com eles em GO, foi super útil !!
@cristoferportela8892
@cristoferportela8892 3 жыл бұрын
Parabens a única pessoa no mundo que foi capaz de fazer eu entender que ponteiros tem alguma utilidade além de complicar a vida... sabia como fazer, só não sabia a utilidade disso
@danilokodavara9085
@danilokodavara9085 2 жыл бұрын
Show de bola !! Na faculdade eu penava para entender o conceito de ponteiro. Aqui em poucos minutos voce ja conseguiu sintetizar de maneira magnfica. Parabens Wesley.
@WaldirBorbaJunior
@WaldirBorbaJunior 3 жыл бұрын
Nem quando programava em C eu entendia direito ponteiro. Agora TUDO fez sentido. GO GO 4ever.
@betocr1
@betocr1 2 жыл бұрын
Se é loco, que vídeo massa. Parabéns
@eduardosalles9212
@eduardosalles9212 Жыл бұрын
é usado pra re-atribuição das variáveis
@jorgeluismiranda91
@jorgeluismiranda91 3 жыл бұрын
Valeu Carinha! Estou estudando Golang, voce foi quem INVOCOU este VUDU!!! Desenvolvia Game Didático com C++(minha Formação). eE quanto a Ponteiro Criei um Game Didático em C++ com Ponteiro, agora vou fazer em Golang . o game é " A Festa do Asterisco". Valeu!!!
@prosperarsemlimite_
@prosperarsemlimite_ Жыл бұрын
Iniciando em Go Lang em 2023, Como fica tranquilo de aprender com essa didática
@leo4berbert
@leo4berbert 2 жыл бұрын
Muito bom. Parabéns!!!!
@diogolimaaoficial4519
@diogolimaaoficial4519 3 жыл бұрын
Show!
@gbauso
@gbauso 2 жыл бұрын
Que didática man, congrats
@jasonloureiro7095
@jasonloureiro7095 Жыл бұрын
Sempre a melhor explicação, parabéns a equipe FullCycle!
@alec1o
@alec1o 2 жыл бұрын
Eu programo em c# e só queria aprender c++ por causa do ponteiro. Eu amo como os ponteiros funcionam e fiquei feliz sabendo que o GO Lang usa este recurso. No c# algo mais parecido com ponteiro é . estou aprendendo todo o curso e praticando. obrigado por compartilhar o seu conhecimento com nos meros iniciantes.
@fah_ds
@fah_ds 2 жыл бұрын
Espetacular cara... coisa que na faculdade geralmente professores n tem tanto tato para explicar, vc deixou bem claro, vlw mano!!!
@denisfeliciano6784
@denisfeliciano6784 Жыл бұрын
Excelente aula e didática, parabéns Wesley!!
@trandreluis
@trandreluis 2 жыл бұрын
Excelente explicação!
@nandomax3
@nandomax3 3 жыл бұрын
Parei de estudar C quando cheguei em ponteiros e struct. Foi quando fui pra python, que trabalhar de forma mais fácil com classes . Bom que o Go me fez retomar os estudos
@maxmelodia
@maxmelodia 3 жыл бұрын
Gostei.
@lucasaster564
@lucasaster564 Жыл бұрын
Aulas e didática incrível, muito obrigado !
@leo_ffranco
@leo_ffranco 3 жыл бұрын
Rapaz, aí tu salvou em!!!
@leandrowx1
@leandrowx1 3 жыл бұрын
Parabéns. Muito bem explicado.
@carolinegh601
@carolinegh601 2 жыл бұрын
Parabéns, Wesley. Sensacional!
@jardelcardoso9984
@jardelcardoso9984 3 жыл бұрын
Wesley explicação simples e objetiva, muito bom
@GustavoRodrigues-le3zw
@GustavoRodrigues-le3zw 3 жыл бұрын
Ótimo vídeo!
@Lelemirai
@Lelemirai 2 ай бұрын
Muito obrigado. Excelente explicação. Fiquei com uma dúvida, mas vou testar eu mesmo aqui. A dúvida e: caso eu tenha 2 instâncias do mesmo struct e chamar o andou() alterando o nome, vai alterar nas duas instâncias ou apenas em uma? Vou testar e depois volto aqui pra comentar o resultado. Muito obrigado mais uma vez.
@Lelemirai
@Lelemirai Ай бұрын
Altera em 1 instância apenas 👍
@alexandrejastrow8454
@alexandrejastrow8454 3 жыл бұрын
Ponteiro é moleza, foda msm e sincronização de threads em c, sem da problema
@luciusstark
@luciusstark Жыл бұрын
Verdade. Até desenhando fica complicado. Quando acha que entendeu, alguma coisa dá errado. hauahuahuah
@paulosumemo
@paulosumemo 3 жыл бұрын
Wesley é Top
@marcelomagalhaes6619
@marcelomagalhaes6619 2 жыл бұрын
que o programa fica mais leve com ponteiro dá pra entender fácil, mas essas funcs que usam ponteiros mudando valores sem usar retun não poderiam ser consideradas funções sujas e assim pecar no entenduimento do código já que de qualquer lugar pode-se mudar o valor de qualquer coisa?
@RafaelRicardo90
@RafaelRicardo90 Жыл бұрын
Não é nada sujo, isso é bem prático na verdade, principalmente quando utilizamos funções recursivas onde se manipula os valores de uma ou mais variáveis, vc evita ter que ficar atribuindo o valor manipulado sempre de volta pra variável, sendo que recursivamente vc poderia nem ter chego ao trecho do código onde a variável é atribuída, gerando um "problema" de ter que ficar devolvendo o valor recursivamente. Na questão de mudar de qualquer lugar, vc não tá mudando de qualquer lugar, vc está explicitamente chamando uma função que tem sua assinatura o recebimento de ponteiro, logo vc sabe o que está acontecendo ali.
@luciusstark
@luciusstark Жыл бұрын
Não é porque você usa ponteiros que nunca usará return. Um bom exemplo disso é o uso de "encoding/json". Por exemplo: func (a *Authentication) toObject(data []byte) error { return json.Unmarshal(data, a) } var credencial Authentication err := credencial.toObject(jsonData) Apenas não compreendi ao certo o que quis dizer com "funções sujas", se foi para expressar complexidade por efeitos colaterais (side-effects), você tem razão. Dessa forma, é crucial ter cautela ao usar o ponteiro, pois, se usado inadequadamente, pode resultar em código de difícil compreensão e manutenção, uma vez que pode ser difícil acompanhar onde e quando o estado está sendo alterado.
@hugomarinheiro5330
@hugomarinheiro5330 3 жыл бұрын
Olá Wesley, sabendo você de php, e em php também pode passar um & e o valor sai alterado, pois foi passado por referência, qual é a vantagem de usar o ponteiro do go? Ou é a mesma coisa sem o *? Abraço
@luciusstark
@luciusstark Жыл бұрын
Entendo que a pergunta foi há um ano, mas responderei da maneira mais curta e elucidativa possível: Em Go, os parâmetros recebem os valores em cópia. Isso quer dizer que: a := 10 add(a, 1) // soma "a" + 1 A variável "a" foi passado por valor (aka. Pass by Value). Outra expressão que denota o mesmo conceito e esclarece ainda mais a ocorrência, é o termo "Pass by Copy", que diz que o "valor de 'a' foi passado em cópia" para a função "add". Ou seja: a := 10 fmt.Println(add(a, 1)) // imprimirá 11 fmt.Println(a) // imprimirá 10 Isso acontece porque "a" não foi alterado, o que foi alterado é a cópia dele que residiu no escopo da função "add" e quando ela retorna (ou seja, acaba), os valores do escopo dela são descartadas. Para efetuar uma mudança em "a" e não em sua cópia, é preciso utilizar o ponteiro. Ficando desta forma: a := 10 add(&a, 1) Em outros cenários que se usa estruturas, a visualização do código muda um pouco, mas o conceito permanece: a := Soma{ operando: 10 } func (s *Soma) add(valor int) { s.operando += valor } a.Soma(1) O uso de "*Soma" faz com que o valor da estrutura instanciada em "a" seja alterada. Você pode até usar "Som" (sem o asterisco - neste caso, sem o ponteiro), mas o efeito não satisfará porque "a.operando" somente será 11 durante a execução do método "add()"; como falei antes, assim que ele terminar sua execução, o valor será descartado e "a" voltará para o valor original, o estado que era antes do "add" ser chamado. Tentei explicar a diferença entre o efeito de "Pass by Value" (esse mesmo termo é chamado também de "Pass by Copy") e o "Pass by Reference".
@luciusstark
@luciusstark Жыл бұрын
Gostaria de complementar com uma coisa: Em Go, não existe Pass by Reference como existe em C, C++, Java, etc. A explicação que fiz acima sobre o efeito de modificação do valor original, a linguagem Go ainda utiliza o conceito "Pass by Value" para dar efeito "Pass by Reference". Quando você passa um ponteiro para uma função em Go, a função ainda recebe uma cópia do ponteiro. Isso significa que é criado um novo ponteiro que aponta para o mesmo local de memória da variável original. Portanto, ao modificar o valor ao qual o ponteiro aponta, as alterações serão refletidas na variável original porque ambos os ponteiros (o original e a cópia) apontam para o mesmo local de memória. Outras terminologias que o pessoal costuma utilizar é chamar de "valor direto" para referir-se ao "endereço de memória" da variável: a := 10 fmt.Println(&a) // imprimira um valor hexadecimal, algo como 0xc0000160a0 (foi demonstrado no vídeo em 6:58). O valor "0xc0000160a0" é o valor direto. Também existe o termo "valor indireto" que é o valor que o ponteiro aponta, neste caso, do exemplo, é o inteiro 10.
@reneperez5589
@reneperez5589 5 ай бұрын
@@luciusstark Excelente explicação amigo. Apenas fazendo uma analogia, seria como trabalhar como uma linguagem orientada a objetos, fazendo uso do THIS. Eu posso ter uma variável no scopo da minha classe, e outra variavel com o mesmo nome dentro de um método. O que tornaria os valores diferentes em ambas as variáveis, seria a utilização do THIS, para acessar a variável declarada no scopo da classe.
@michelbernardo6883
@michelbernardo6883 3 жыл бұрын
Primeiro.
@artu_almeida
@artu_almeida 2 жыл бұрын
entao resumidamente, vc acessa valor da memoria e seta valor na memoria atraves de ponteiros, mas funcao no Carro, nao era só retornar o valor inves de usar o ponteiro? kkk isso q fazemos é pra ganhar performance? nossa cara... na faculdade ponteiros em c pra mim foi um pesadelo, comecei minha carreira com java, me livrei deles e agora estou estudando golang e me deparo com ponteiros, eu ja tava querendo desistir, ainda bem q encontrei esse video
@natanael4883
@natanael4883 2 жыл бұрын
É que nesse exemplo parece ser inútil usar ponteiro pois ele quis mais explicar o conceito. Mas se vc importa um pacote que tem um tipo de função que recebe um valor externo e retorna uma variável, o ponteiro é interessante para fazer a substituição e deixar o código mais clean tb
@luciusstark
@luciusstark Жыл бұрын
Sim, o uso de ponteiros é para fins de desempenho e modificação no valor original e não em sua cópia. No caso da função Carro, você está correto. Porém, entende-se que a prova de conceito apresentado neste vídeo serve somente para entender o funcionamento do ponteiro e não a sua utilidade. O uso de ponteiros ou valores ainda é comumente confuso para uma certa porção de desenvolvedores. Em geral, usar os ponteiros é útil quando você quer modificar o valor original, evitar cópias desnecessárias de dados imensos ou implementar estruturas de dados dinâmicas como listas encadeadas ou árvores. Usar valores é preferível quando você quer evitar efeitos colaterais, trabalhar com tipos simples ou pequenos, ou garantir a imutabilidade dos dados. Muitos são educados que a linguagem Go usa o conceito "Pass by Value" e quando estuda sobre ponteiros, acham que outro conceito é usado; sendo que, na verdade, Go ainda utiliza "Pass by Value" para dar efeito de "Pass by Reference". Acontece que a cópia do argumento é o endereço de memória (&var) e não o valor em si (*var), por ser cópia, você tem dois ponteiros que apontam para o mesmo valor. Ou seja, é melhor você ter uma cópia de endereçamento de memória que aponta para um dado imenso do que copiar esses dados.
Structs, Composição e Json com Golang
25:23
Full Cycle
Рет қаралды 13 М.
Structs, Métodos e Interfaces com Golang
27:00
Full Cycle
Рет қаралды 7 М.
Looks realistic #tiktok
00:22
Анастасия Тарасова
Рет қаралды 13 МЛН
1 or 2?🐄
00:12
Kan Andrey
Рет қаралды 41 МЛН
Como é fácil criar um App no Python #Shorts
0:42
Thales Veloso
Рет қаралды 496 М.
Golang: Você precisa saber isso sobre funções
17:57
Full Cycle
Рет қаралды 30 М.
APIs e Mensageria com Golang
1:41:20
Full Cycle
Рет қаралды 12 М.
Essa é a técnica para tratar erros em Golang
14:13
Full Cycle
Рет қаралды 31 М.
O que é gRPC?
6:52
Full Cycle
Рет қаралды 19 М.
Golang do Zero ao Deploy. Guia rápido
1:40:00
Full Cycle
Рет қаралды 14 М.
Como criar uma API em Golang (sem enrolação)
9:16
Filho da nuvem
Рет қаралды 11 М.
Nutella bro sis family Challenge 😋
0:31
Mr. Clabik
Рет қаралды 9 МЛН
Man tries outrunning cops on skateboard
0:10
Frankie Lapenna
Рет қаралды 22 МЛН
DESAFIO IMPOSSÍVEL! #trending
0:13
O Mundo da Ágata
Рет қаралды 17 МЛН
Poor beggar, fortunately there have joker to help#joker #shorts
0:57
Untitled Joker
Рет қаралды 11 МЛН
Найди Влада на стадионе
0:26
ЛогикЛаб
Рет қаралды 1,7 МЛН