Um momento
Aula 42
Cursos / Aprenda Go / Golang (Curso de Programação)
Como Definir Ponteiros na Linguagem Golang - Aula de Go

Summary

Resumo da Aula sobre Ponteiros em Go

Nesta aula, foi abordado o conceito de ponteiros na linguagem Go (GoLang). Aqui estão os principais pontos discutidos:

O que são Ponteiros?

  • Ponteiros são endereços de memória.
  • Uma variável pode armazenar o endereço de memória de outra variável.

Exemplo Prático

  1. Declaração de Variáveis:

    • Uma variável A é declarada com o valor 32.
    • O valor de A é impresso, resultando em 32.
  2. Criando um Ponteiro:

    • Uma nova variável P é criada como um ponteiro para A.
    • O endereço de A é obtido usando o operador %, armazenado na variável P.
  3. Desreferenciando o Ponteiro:

    • Para acessar o valor ao qual P aponta, utiliza-se o asterisco (*). Ao imprimir *P, o valor 32 é exibido.

Alterando o Valor da Variável A

  • Para mudar o valor de A através do ponteiro P, usa-se novamente a desreferenciação:
    *P = 18
    
  • Após a atribuição, o valor de A muda para 18.

Modificando o Valor Usando Operações

  • É possível também realizar operações:
    *P += 2 // Aumenta o valor em 2
    
  • O valor de A se torna 34.

Tipos de Ponteiro

  • O tipo do ponteiro é definido com um asterisco antes do tipo de dados. Exemplo para um ponteiro para int:
    var P *int
    

Valores Iniciais de Ponteiros

  • Se um ponteiro não for inicializado, ele terá o valor zero (nulo), representado como nil em Go.

Considerações Finais

  • É importante notar que Go não possui aritmética de ponteiros, ao contrário da linguagem C.
  • A aula conclui com a reafirmação do conceito e utilização dos ponteiros em Go.

Encerramento

  • A aula foi finalizada e há expectativa de uma próxima sessão.

Video Transcript

Nesta aula vamos aprender sobre ponteiros na linguagem GoLong. Então ponteiros são endereços da memória, tá? Então a gente vai ter uma variável que vai armazenar o endereço de memória de outra, de um certo valor de outro variável, tá? Então, vamos começar aqui. Por exemplo, se a gente tiver uma variável aqui A com o valor 32, tá? Eu vou declarar e definir essa variável, valor 32. Agora, se o DFMT printLn, o A lá no terminal aqui, GoLong.tetos.go, obviamente, vamos ver o resultado. 32 será impresso no meu terminal. Agora, vamos criar um ponteiro para essa variável aqui A. Então, eu vou dizer o nome da variável será P e eu vou usar o 2 pontos igual. Agora, eu quero fazer um ponteiro para poder referenciar a variável A, tá? Então esse ponteiro vai apontar para local onde a variável A, armazena 32. Agora, para poder pegar esse endereço da memória, vamos usar o operador 1%, e pôr o nome da variável que você quer pegar o endereço. Eu vou pegar o endereço, variável A, tá? Então, com isso, a gente pega esse endereço e armazena na variável P. Então, esse é um ponteiro, né? Ponteiro, armazena e endereço na memória. Agora, vamos dar aqui o só curioso que é o printLn do P, tá? Se não adquique um valor decimal, o endereço da memória. Então, para poder a gente pegar o valor que o ponteiro aponta, nós temos que desreferenciar o inglês de reference, tá? Então, para poder fazer isso, você pega a nome da variável do ponteiro, né? E põe o astereisco antes do nome. Vamos ver o que acontece quando a gente põe o astereisco P. Agora, a gente obtê 32, tá? Então, o que é que ele vai fazer? Ele vai pegar o ponteiro, né? Ele vai e vai para o local onde ele está apontando, nesse caso, esse local aqui, e vai pegar o valor, né? Nesse caso, ele está apontando para o A. Tem valor 32, então, ele vai pegar esse valor e vai mostrar aqui, tá? Tá certo? Agora, legal isso. Mas o que aconteceria se a gente quiser, por exemplo, mudar o valor de A através do ponteiro P? Como é que faz isso? Então, você vai fazer mesmo a desreferência e botar o sinal de igual para poder fazer aquela atribuição. Por exemplo, se eu quiser mudar o valor de A para 18 usando o ponteiro P, a gente faz o quê? Pega o ponteiro P, agora o ponteiro P, né? Aqui, ele é o endereço. Eu não quero o endereço. Eu quero o valor que está apontando, aquele local. Então, vá lá para o local, eu disse referência, agora mude aquele valor para 18 usando o sinal de igual para a atribuição. Vamos ver no que dá agora. Deixa eu mudar a print-alane para A para você ver, tá? E vou mudar o print-alane para A. Eu acho que inicialmente A é 32, atribuímos um ponteiro, um endereço de A, chamado P, de desreferenciamos. Vamos lá para o valor de A e mudamos o valor de A para 18. Você vai ver que A realmente mudou o valor aqui. Tá, então agora vamos, obtemos 18 aqui. Então, mudamos o valor da variável A através do ponteiro P. Ponteiro P aponta para variar a, para aquele local onde o A mais de A é 32, inicialmente, a gente usa desreferências, desreferências são aqui, a estereço, antes do nome do ponteiro, e a gente fez a atribuição para o novo valor. Então, nesse caso, para poder setar o novo valor. Tá? Você também pode, tá? Adicionar, usar o próprio valor aqui, por exemplo, se A for 32 e eu quiser adicionar 2 a esse valor usando o ponteiro, através do ponteiro, a gente faz o seguinte, você pega, assim, ó, o a estereço P vai lhe dar o valor 32, você adiciona 2, 32 mais 2, 34, será setado no local que o P aponta, nesse caso variável A. Então, A agora vai ser 34. Tá, tá aí. Certo? Agora, se, vamos ver aqui. Então, só para concluir, tá? Ponteiros na linguagem Go, ponteiros, eles armazenam o endereço de memória de um certo valor, tá? Então, o ponteiro, o tipo é sempre a, o asterisco, antes do nome do tipo, deixa eu te mostrar aqui. Por exemplo, se eu fosse definir a variável P, na verdade, seria dessa maneira aqui. Vamos fazer o seguinte, vamos definir essas variáveis explicitamente. O a é uma variável de tipo o que? Eu, nesse caso, int e ponho o sinal de igual, tá? Agora, o P será o que? O que será o tipo do P? Então, o P vai ser uma variável, tá? Eu, tirar esse aqui. P será uma variável de tipo, tá? Bem, o P aponta para uma variável A, nesse caso, mas variável A de tipo o que? int. Então, ele vai ser um ponteiro para int. Então, tem que ter o asterisco antes do nome desse tipo que ele aponta. Então, o tipo dessa variável P, tá? É esse aqui, asterisco int, que significa um ponteiro para um valor int, tá bom? Vamos ver se não deu problema. Ainda está 34, então deu certo, tá? Então, esse é o tipo do ponteiro. Agora, o que acontece se eu não tiver definido um valor inicialmente? Ele vai usar o valor zero, né? Qual é o valor zero de uma variável de tipo de ponteiro? Vamos ver. P declarar não usado. Deixa eu dar o print além do P, tá? Vou dar o print além do P, que é uma variável que não foi definida. Então, ele vai usar o valor zero. Valor zero de um ponteiro na linguagem Go, tá? Ah, eu esqueci do A também. Compilador não me deixa. Então, vai ser new. O valor zero de um ponteiro ainda não definido vai ser new, tá? É para você saber. Tá? Então, terminando, como anota, se você sabe linguagem C, tem o que dizer que tem Google, não tem aritmética de ponteiros, tá? Se você estiver curioso sobre isso, não há aritmética de ponteiros na linguagem Go, uma coisa que tem na linguagem C, tá? Então, 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: