Aula 50
Map Com Chave String Mapeando para Valor Struct - Aula de Golang
Summary
# Resumo do Aprendizado sobre Maps em Go
Neste tutorial, aprendemos a utilizar o `map` em Go para mapear strings a uma estrutura (struct). Vamos seguir as etapas abordadas:
## Definição da Estrutura
1. **Criando uma Struct `perfil`**:
- A estrutura `perfil` representa um perfil de uma rede social de namoro.
- Campos definidos:
- `altura` (float64)
- `ativo` (booleano)
- `profissao` (string)
Exemplo de definição:
```go
type perfil struct {
altura float64
ativo bool
profissao string
}
Criando o Map
- Definindo um Map:
- Usamos a função
make
para criar ummap
que associa umstring
a umperfil
.
perfis := make(map[string]perfil)
- Usamos a função
Adicionando Perfis
-
Adicionando um perfil para João:
- Criamos um perfil literal para João:
perfis["João"] = perfil{1.74, true, "médico"}
-
Imprimindo o resultado:
- Usamos
fmt.Println
para verificar se o perfil foi adicionado corretamente.
- Usamos
Diagnóstico de Erros
- Depuração de Sintaxe:
- Discutimos como debugar erros de sintaxe relacionados à definição do
struct
e ao uso domap
. Por exemplo, evitar vírgulas desnecessárias após a definição de campos.
- Discutimos como debugar erros de sintaxe relacionados à definição do
Exercício
- Praticando a Criação de Outro Perfil:
- Foi proposto criar um perfil para Maria com as seguintes características:
- Altura: 1.63
- Ativo: false
- Profissão: engenheira
- Exemplo de implementação:
perfis["Maria"] = perfil{1.63, false, "engenheira"}
- Foi proposto criar um perfil para Maria com as seguintes características:
Conclusão
- Ao final, aprendemos a mapear strings para uma struct em Go e a depurar erros quando necessário.
- Na próxima aula, continuaremos com mais práticas sobre
maps
estructs
.
Até a próxima!
Video Transcript
Nós vamos aprender como fazer o map por de valor, em vez de ser um simples intro ou
uma string, nós vamos usar um struct, uma estrutura com o valor de um map.
Mas a gente vai aprender o básico do map, então não vai ser nada de novo.
Mas é só para a gente ver como é que faz um map que mapeia de string para um struct.
Então vamos começar. Vamos supor, por exemplo, que a gente tenha um struct aqui, type, vamos fazer um struct,
primeiro digita type, perfil struct. Essa struct vai ser, por exemplo, o perfil de uma rede social de namoros, por exemplo.
Então cada pessoa mostra seu perfil com vários parâmetros e o pessoal vai fazer a busca e tem vários parâmetros.
Vamos simplificar, vamos usar, por exemplo, a gente pode saber a altura do indivíduo.
A gente precisa também saber se o perfil está ativo para poder mostrar no front end, por exemplo.
E você tem, sei lá, a profissão do indivíduo.
Então um perfil assim de um aplicativo de namoros.
Então vamos dizer aqui, vamos criarmos um struct, type, o nome é perfil, tá, um struct.
Agora vamos definir cada campo, eu já botei o nome, só nos resta definir o tipo de cada um.
A altura eu vou usar um float64 para ver se o perfil está ativo ou não.
Vou usar um simple struct, valor booleano, para a profissão só vou usar um struct, tá.
Essa maneira aqui.
Pronto?
Se quiser, pode também definir por aqui.
Não te faz.
Então temos o perfil, vamos aprender agora como a gente pode fazer um map que vai mapear o nome da pessoa, tá.
Um nome a um perfil.
Então, por exemplo aqui.
Vamos fazer um map usando o make, tá.
Então vai...
Vou falar pessoa 1, pessoas e perfis, né, na verdade.
Perfis ao tipo vai ser um map de que?
Vamos mapear de string para o que?
Agora o valor, o tipo do valor será o perfil, tá.
Que a gente definiu, nosso próprio tipo, tá.
Vai ser igual ao que?
Vamos criar aqui make.
Make o que? Vamos criar um map.
Da mesma coisa que eu digitei antes.
Na verdade, se quiser, pode omitir essa parte aqui.
Mas eu escrevi tudo longo para você entender o que a gente vai fazer.
Mas quando você aprender tudo isso, você pode começar a omitir as coisas.
Se você já sabe, já entende o que está acontecendo, né.
Mas sempre é bom começar assim, quando você começa do zero, digita tudo,
explícito para você entender o que está acontecendo.
Então a gente chama a função make para poder criar um map
para mapear uma chave de tipo string para um valor de tipo perfil.
Perfil é um tipo que nós definimos aqui,
é um simple struct, com 3 campos.
Campos de altura, ativo e profissão.
A altura é um valor de ponto flutuante, ativo um valor true ou false,
e o profissão é simple string.
Então temos a variável perfil, legal, criamos o map.
Agora nós podemos, por exemplo, eu vou definir o perfil para o João.
Perfis, o nome vai ser a chave, tá.
Aqui que eu vou digitar, João.
Perfíto do João vai ser o seguinte.
Vamos criar um perfil literal aqui, tá.
Então perfil literal, você digita o nome do struct,
abre as chaves e define cada propriedade.
Pode ser em ordem se você não especificar o nome delas.
Então vamos fazer em ordem.
Qual é a altura?
Vamos... uma altura arbitrária, um metro, ponto 74, tá.
Então a altura é em metro, estou usando.
O ativo, sim, eu vou dizer ativo, que o perfil está ativo, profissão, sei lá, tá médico, tá.
Então vamos dar o print ln aqui do pacote fmt para ver se realmente isso deu certo.
O meu arquivo agora é maps3.go, que eu vou... sei lá, go run maps3.go.
E tem um erro aqui de sintaxi, unexpected comma.
Ele estava esperando o semicolon, ponto e virula, ou nova linha, linha 6, vamos ver.
Linha 6, ah, desculpa, eu fiz um erro aqui.
Não preciso dar virula, aqui, tá.
Comentei um erro ali, então resolveu o primeiro problema.
Isso é bom para a gente aprender como é que debuga, se tem um erro, tem aqui a linha, número da linha, tá.
E a coluna 17, então o arquivo está aqui, maps3.go.
E aqui é o erro, erro de sintaxi, uma virula inesperada, que eu tinha adicionado a virula
depois de cada definição dos truck, ele esperou um semicolon ou uma nova linha, ou até a fechamento da chave.
Então não precisa de dar virula, tá, quando você definir struct.
Às vezes a gente esquece dessas coisas e o compilador nos diz e a gente corrige e aprende com os nossos erros.
Agora tem outro erro, nos resta esse erro, no arquivo maps3.go, linha 15, coluna 25, é um erro de sintaxi, tá.
A nova linha inesperada, esperava uma virula ou o fechamento da chave.
Então vamos lá para a linha 15, coluna 25, aqui você note no meu editor de texto,
tem dizendo onde está a coluna 25, aqui no final.
Então ele esperava que eu digitasse uma virula ou até fechasse a chave dessa maneira aqui, tanto faz, tá.
Você vê que funcionou assim e funciona com a virula lá, tá.
Então aqui o console println deu o primeiro map, tem juão,
na hora de que o juão mapeia para um struct que tem os valores 1.74, true e médico,
respectivamente para altura, ativo e profissão.
Então deu tudo certo, no nosso mapeamento de string para um struct de perfil.
E a gente pode fazer outro também, eu quero que com um exercício você faça comigo, vamos fazer o perfil para Maria.
Eu quero que você defina uma altura de 1 metro e 63 e ativo é false, profissão, engenheira, tá.
Vamos lá, Maria, perfil, o que é que eu te falava 63, false, engenheira, tá.
Então temos aqui um perfil literal, né.
E agora se a gente dá o println, tem também, eu esqueci do que?
Olha aqui o eu, quer que eu esqueci de novo.
Quero que você pratique o programas, né.
Onde é qual é o arquivo? Arquivo maps 3.go que eu já tenho aberto, qual é a linha? Linha 18.
Linha 18 é essa aqui, qual é a coluna? 30, coluna 30 é aqui, tá.
No final, e tá dizendo nova linha inesperada, esperava que tivesse uma vírgula
ou o fechamento da chave, tanto faz você usar, eu só vou selecionar essa vírgula, tá.
Legal, agora o map tem duas chaves, né, duas propriedades de Juan e Maria.
De Juan já tínhamos antes, Maria agora mapeia para um struct com esses valores de maps 63 para altura,
false, prático e engenheira como profissão.
Tá legal.
Então vamos dar uma pausa por aqui e de vez na próxima aula. Até mais.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: