Um momento
Aula 48
Cursos / Aprenda Go / Golang (Curso de Programação)
Atribuição e Acesso a Novos Pares de Chave-Valor da estrutura Map na linguagem Golang

Summary

Resumo da Aula sobre Maps em Go

Introdução

Nesta aula, aprendemos sobre como criar e manipular maps na linguagem de programação Go, que são estruturas de dados para associar pares de chave e valor.

Criação de Um Map

  • Utilizamos a função make para criar um map. No exemplo, criamos um map notas que associa strings (nomes dos estudantes) a inteiros (notas):
    notas := make(map[string]int)
    
  • Adicionamos dois pares chave-valor ao map:
    • "anana" com valor 9
    • "maria" com valor 10

Acesso a Valores no Map

  • Para acessar o valor de uma chave, utilizamos a notação map[chave]:
    valorAnana := notas["anana"] // retorna 9
    valorMaria := notas["maria"] // retorna 10
    

Tratamento de Chaves Inexistentes

  • Se tentarmos acessar uma chave que não existe no map, retornaremos o valor zero do tipo associado (no caso, o inteiro 0 para chaves que não existem).
    valorJoao := notas["joao"] // retorna 0
    

Verificação de Existência de Chaves

  • Para checar se uma chave está presente no map, podemos usar uma abordagem que retorna dois valores:
    valor, existe := notas["joao"]
    
    • existe será false se "joão" não estiver no map, permitindo evitar referências a chaves inexistentes.

Lógica de Condições

  • Usamos uma estrutura condicional if para agir com base na existência da chave:
    if existe {
        fmt.Println(valor)
    }
    
    • Isso garante que o código apenas tenta imprimir o valor se a chave existir.

Conclusão

  • Aprendemos a criar um map, adicionar chaves e valores, acessar valores, e como gerenciar e verificar a existência de chaves antes de tentar acessá-las.
  • Para finalizar, é importante lembrar que ao acessar uma chave que não existe, obtemos um valor padrão (zero para tipos numéricos).

Referências

  • Você pode praticar o que aprendeu nesse exemplo e explorar mais sobre maps em Go nas documentações oficiais ou tutoriais online.

Até a próxima aula!

Video Transcript

Vamos rodar o programa e no terminal vou dizer go run maps.go que é o nome do meu arquivo. Então o println ele mostra que temos um map com o propriedade anana né a chave anana associada ao valor 9 e maria associada ao valor 10. Então temos aqui o map que já tem esses dois pares. Agora isso é legal, fizemos o map. Agora será que dá pra acessar o valor da anana individualmente? Será que dá pra acessar o valor da maria individualmente pra gente obter as notas específicas de cada estudante? Então isso é possível usando a mesma notação que a gente fez aqui quando a gente modificou ou adicionou um novo par de chave valor ao nosso map. Então aqui no println se você quiser só obter a nota que a anana recebeu, obteu, é só dizer o nome da variável que mantém o map, abre colchet, o nome da chave nesse caso anana tá e ele vai pegar, vai olhar o nosso map e se tiver um valor associado a anana vai nos retornar esse valor 9 aqui. Vamos lá rodar de novo e ver o que acontece. Obtemos o valor 9. Da mesma maneira vai funcionar se a gente dizer notas, abre colchetes, aspas, maria, vai vamos obter que o valor 10, certo? O que será que aconteceria se a gente desse outro valor de uma pessoa que ainda não tivesse contido no map? Vamos ver. Então parece que se você tentar acessar o valor de uma propriedade que ainda não está presente no nosso map, ele vai retornar o valor zero do tipo de valor que o map produz. Nesse caso o valor associado a essa chave é um tipo íntese, o valor zero de íntese é zero, tá? Por isso quando a gente tenta referenciar o valor das notas do João que ainda não está contida no map, nós iremos obter o valor zero. Então tome cuidado a usar isso. Como a gente pode resolver esse problema? Então primeiro a gente tem que checar se a chave já tem um valor no map, se a chave está contido no map. Para poder checar isso, vamos fazer a seguinte maneira, tá? Olha aqui. Então vamos pegar o notas de João aqui, vou recortar. Agora esse cara aqui vai retornar duas coisas. A gente já sabe que a gente pode obter o valor associado a essa chave João através dessa notação aqui, mas também podemos determinar se o João está presente no nosso map. Vamos fazer o seguinte, a esquerda dessa variável aqui, vamos fazer o seguinte, vamos definir aqui primeiro o valor, tá? E depois existe. Então duas variáveis que vão criar, eu vou usar os dois pontos igual, tá? Para poder associar o valor de retorno desse, há duas variáveis. A primeira é o valor que a gente já sabe, né? Se eu pôr o valor aqui vai dar zero porque João não está presente no... Deixa eu dar o existe também aqui porque o compilador não me deixa rodar se a variável não for usada. Tá? Então olha aqui o primeiro valor que é zero, né? A gente já esperava isso, tá? Então era o que a gente já tinha antes. Mas agora tem essa segunda variável que eu separei com a Virgo, o espaço é só para o estilo. Essa variável vai nos... Irá nos dizer se a chave está contido no map ou não. Então será que tem algum valor associado ao João? Será que tem? Então o existe vai ser true ou vai ser false? Um valor boleano que irá nos dizer se ainda existe. Note que o console log, o println, né? Deu false. Isso significa que o valor de existe aqui que foi false, significa que João ainda não está presente no map. Com isso a gente pode usar um if, né? Para poder checar se a gente deve dar o println ou não, por exemplo. Tá? Então vamos checar assim. Então vamos if, se o valor existe, nós vamos dar o println do valor. Tá? Então se for assim, tá? Você note? Agora não é primeiro nada, porque o existe é false porque João não está presente no nosso map. Por causa disso, a condição do if é false. A condição false não irá rodar nenhum código no corpo do if entre as chaves. Por isso não aconteceu nada. Agora se esse cara aqui fosse, por exemplo, Maria, Maria está presente no nosso map, então existe, se tornará true, tá? E o valor será 10. Então vamos ver. O existe aqui no if será true, por causa disso, esse corpo do if será executado e imprimirá o valor 10. Como esperado, aqui está o valor 10. Tá certo? Então é assim que a gente checa se a chave já está presente no nosso map. Você põe aqui o segundo valor, você pode obter desse acesso aqui, você usa no if para checar e se existe, você faz alguma coisa. Se não existe, se quiser, se você tiver uma lógica para fazer se não existe, também pode fazer. Talvez você queira associar o valor ou outra coisa. Então vamos me avisar tudo aqui. Aprendemos a criar o chamado map, que é uma estrutura para associar pares de chave e valor. Para poder criar um map, aqui a notação do tipo é palavra-chave-map, seguida de colchetes, seguida do tipo da chave, que vai ser indexar esse mapa, o residicionário. Então o map, o valor correspondente a essa chave, vai aparecer aqui na terceira parte do tipo, nesse caso é um valor índice. Então a gente vai criar um variável de notas para manter, armazenar um map indexado por índice e um valor associado vai ser índice. Para poder criar um map, na verdade a gente usa aquela mesma função que a gente já usou, chamada make. Nesse caso você chama um make com o tipo de map, associated a string a1int. Com isso a gente criou um map e a gente pode começar a adicionar propriedades a esse map, adicionar pares de chave e valor. A gente pode adicionar chave yona e associar o valor 9 com essa notação, nome da variável, colchetes e chave, nesse caso one string e no lado direito do sinal de igual, uma operação de atribuição, o valor int, nesse caso 9. Depois a gente associa Maria com a nota 10. Se a gente quiser checar se há um chave está presente ou não no nosso map, podemos definir duas variáveis dessa maneira aqui. A primeira vai ser o valor, se tiver algum valor e o existe. O existe a segunda valor que vai nos dizer se a chave existe ou não no map. Nesse caso se existe será true, se não será false. Antes de você tentar referenciar notas de chave que não existe, ele irá usar o valor zero correspondente ao valor aqui, nesse caso int, associado a nossa chave. Nesse caso será zero e a gente pode checar se o valor existe antes de imprimir o valor fazendo um if, nessa maneira, e o if existe, a gente faz alguma coisa com o valor. O if valor ainda será definido, ainda que existe seja false, porque ele irá usar o valor zero. Nesse caso, se o João não existisse, o valor zero associado a sua chave seria do tipo int, o valor zero tipo int é zero, então o valor seria zero e ele iria imprimir zero se eu tivesse aqui fora. Certo? 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: