Um momento
Aula 07
Cursos / Módulos de Golang: Gerenciamento de Pacotes e Dependências na Linguagem Go
Módulo com 2 Pacotes, Documentação GO DOC, Publicação e Consumo de Nova Versão

Summary

## Resumo da Aula

Nesta aula, foi ensinado como adicionar um novo pacote a um módulo Go existente, resultando em um módulo que contém dois pacotes. O foco foi também na documentação usando o formato goDoc.

### Principais Tópicos Abordados

1. **Indexação no pkg.go.dev**:
   - O módulo foi indexado no site `pkg.go.dev`, onde versões anteriores podem ser encontradas.

2. **Estrutura do Módulo**:
   - O módulo possui uma pasta chamada `analisador`, que contém um único pacote chamado `analisador`.
   - Um novo pacote, `console-lidar`, foi criado para consolidar resultados do analisador.

3. **Implementação da Função**:
   - A função `mapa para string` foi criada no pacote `console-lidar`, convertendo um mapa de chaves e valores em uma query string.
   - Exemplo de como utilizar laços `for` para iterar sobre o mapa e construir a string.

4. **Documentação do Código**:
   - Para documentar a função, adiciona-se um comentário acima da assinatura da função.
   - A forma de documentar pacotes também foi explicada.

5. **Publicação do Módulo**:
   - A nova versão do módulo (0.4.0) foi publicada no GitHub.
   - O processo envolveu comandos Git para adicionar e marcar a nova versão.

6. **Uso no Pacote Consumidor**:
   - O pacote consumidor foi atualizado para usar a nova função `mapa para string`.
   - Demonstração da atualização da versão do módulo usando `go get`.

7. **Visualização da Documentação**:
   - A comparação da documentação gerada no Go e no pkg.go.dev foi apresentada.

### Conclusões
- A aula finalizou com a implementação bem-sucedida da função e a verificação da documentação. O instructor incentivou os alunos a interagir, deixar comentários e curtir a aula.

**Obrigado por assistir!**

Video Transcript

Pessoal estamos de volta com mais uma aula. Esta aula eu vou te ensinar como adicionar um outro pacote para um módulo já existente. O módulo terá dois pacotes. Vamos também aprender a documentar o nosso módulo, os nossos pacotes, na maneira do goDoc. Antes de começar, gostaria de te mostrar uma coisa legal. No tema do nosso módulo que a gente fez, o Go traço módulo para a subbiblioteca, que a gente foi indexado no site do gopkg.go.dev. Se você buscar, pelas palavras, o NBKMoodutech, que é parte do caminho do módulo, ele encontrou aquela versão 0.3.0 que nós lançamos anteriormente. Bem legal, porque é hospedado no gethub.com. O pkg.go.dev faz uma coletânea, deve ser todos os dias, procura novos módulos que aparecem no gethub e apareceu o nosso módulo que agora aparece aqui. Bem legal então. Então 0.3.0 a última vez publicado nessa data. E mostra até os imports, que é strings. Tá bom? Agora vamos ao tópico do abrir meu editor de texto. Estou no projeto Go traço módulo para a subbiblioteca. Lembra que tem a pasta analisador e o nome da pasta corresponde ao nome do pacote. Nem sempre é assim, né? Às vezes o nome da pasta é diferente do nome do pacote. Na hora de importar, tem que usar o nome da pasta, mas na hora de usar, tem que usar o nome do pacote. Meu confuso, né? Mas tem esse detalhe. Certo? Então temos aqui um pacote só chamado analisador. Então como o diretório indica que é um só pacote, todos os arquivos dentro desse diretório por convenção são parte do pacote analisador. Agora eu gostaria de fazer o seguinte, criar outro pacote diferente de analisador. Nós temos um módulo que terá dois pacotes. Lembre que o módulo pode ter não só um, mas vários pacotes. Basta criar um diretório diferente para cada pacote. Então eu vou criar uma nova pasta lá em cima. E vou chamar de console-lidar. Esse pacote-lidar vai ter um método, uma função, e irá consolidar o resultado do analisador para poder fazer a operação reversa. Se você se lembra, nós pegamos o one string na função analisar e retornamos o mapa indexado por string, cujo valor é string. Nós queremos fazer a operação aposta. Então eu vou criar um arquivo chamado console-lidar.go, vai ser pacote-console-lidar, e vou criar a função, vou chamar mapa para string. Note que a primeira letra é maiúscula, porque eu quero exportar essa função para ela ser consumida de fora, por terceiros. O mapa para string, como o nome já sugere, leva como entrada o mapa de string. Abre crochet string, fecha crochet. Cabe com o valor string. Eu vou dizer isso, mapa, como o nome da variável. O valor de return será um string, que é o mapa com a solidar e o monstros string. Está certo? Vamos fazer implementação aqui. Primeiro vou fazer uma string para poder armazenar a query string, da maneira que a gente pega cada chave e valor. Vou chamar var, str, e vou chamar de query string. Igual a começa com sinal de interrogação, então já vou iniciar a variável com esse sinal. Agora vou fazer um loop for chave valor, 2 pontos igual range no mapa. Vou fazer repetição para cada chave e valor do mapa, foi fornecido como entrada. Então vou fazer o seguinte, a query string vou associar o valor de existente e vou combinar com a chave igual valor. Para combinar isso tudo vou usar o s frente f, fmt.sfrontf. Abre aspas por cento ao b igual para cento ao v, chave, valor. O valor de cento ao v será substituído pelo valor de chave, cento ao segundo, cento ao v, vai ser o valor de valor. Se eu salvar meu arquivo ele importa automaticamente. Legal, eu fiz esse loop, no final vamos retornar a query string já construída. Mas tem um detalhe, eu não tenho o separador, eu preciso adicionar isso, mas quando adicionar. Bem, não é no primeiro, porque se você adicionar primeiro vai ficar assim. Já vi valor, e está errado, então a gente tem que pular o primeiro. Por isso vou fazer isso, tenho que me lembrar qual é o índice que eu estou. Então vou começar com fm variavel para índice, e vai índice começa do zero. E cada vez que eu faço uma repetição, eu aumento o índice mais um. Agora antes de adicionar chave e valor a string, eu tenho que ver se o índice não for o primeiro. Eu vou adicionar 1%. Query string igual to query string mais 1%. Como eu faço essa operação, pego o valor existente com a catena, com o % e atribui a variável mesmo. Eu posso simplificar isso com o mais igual, o operador mais igual, mesmo maneira aqui embaixo. O operador mais igual. Está bom. Para demonstrar esse uso, vamos fazer o seguinte. Deixa o e no terminal. Eu quero testar isso antes de fazer o comito e fazer uma nova versão do módulo. Eu gostaria de ir no playground, só para testar isso bem rapidinho. Mapa para string. Preciso de um exemplo. Mapa map string igual. Busca igual a 2 fontes. Termo entre aspas, vígula, abre aspas, ordem, fecha aspas, 2 fontes. Desse, fecha fecha. Tem um mapa literal. Vou chamar o mapa para string, que está dentro do módulo que... Ah não, não tem módulo ainda. Vou chamar só o mapa para string com o mapa. Vou dar o fmt.println isso. Se joga alguma coisa ou não? Então temos o sinal de interrogação seguido do primeiro par, que é busco igual termo, separado pelo ampersand. Um ordem igual desce, o segundo par, separado pelo sinal de igual. Então está certo. Com a função la lidada, eu vou voltar o meu editor de texto. Antes de publicar, eu queria te falar sobre a documentação. Deixa eu ir no terminal de mostrar uma coisa. Eu falo a Go, espaço doc, espaço consolidar. Ele me mostra a documentação do pacote consolidar. Ele diz pacote consolidar, importe, está aqui como importar. E mostra uma lista de funções. Nesse caso, consolidar tem uma só função e mostra a assinatura da função com a entrada e a saída. Isso é bem legal. Na maneira de você documentar o seu código no Go, é a seguinte. Você cria uma linha acima da coisa que você quer documentar. Por exemplo, eu quero documentar a função mapa para string. Então a linha 5 tem a assinatura da função. Então na linha anterior, que é nesse caso nova linha 5, eu vou adicionar barra a barra, espaço. Eu tenho que dizer o mesmo nome da função, mapa para string, e explicar o que é. Mapa para string, mapeia, consolida, as chaves e valores de um mapa. E cria um string e com o seguinte formato. Barra a barra, espaço, espaço. Estou explicando aqui o sinal de interrogação. Vou dar, por exemplo, chave igual valor, chave 1 igual valor 1, ampersand, chave 2 igual valor 2. A ampersand é assim por diante. Eu vou deixar assim mesmo. Se você quiser adicionar outro parágrafo, é só criar uma linha em branco entre o primeiro parágrafo e o segundo. O mapa segue. O mapa de entrada tem o seguinte formato. Chave 1, 2 pontos, valor 1, chave 2, expontos, valor 2. Se eu salvar isso e voltar o meu terminal e falar Godop com solidar, ele devia mostrar. Muito estranho ver mais coisas. Talvez eu tenha que dizer consolidar.mapa para string para ter mais informações. Para ter uma informação específica sobre essa função, eu digo Godop, espaço, doc, espaço, consolidar.mapa para string. Ele mostra a descrição que eu tinha escrito lá. Para te ajudar a visualizar melhor o significado da documentação, porque documentar, eu vou do navegador no site do pkg.go.dev. Se eu clicar em qualquer pacote, por exemplo, da biblioteca padrão FMT, eu tenho essa documentação. Essa documentação é gerada pelo Godop. Você note que tem um índice e aquele mesmo índice que aparece quando a gente falou Godop. Se você clicar em uma das funções, ele mostra a descrição. Essa descrição é aquela que você pode ter lá nos seus comentários no código. Deixa eu te mostrar isso tudo como aparece no código fonte do Go. Se eu clicar de volta no VJ Studio, por exemplo, no sprintf, se eu clicar com o botão direito, no vscode com a extensão do Go, eu posso ir para a definição. Ele mostra aqui a definição e tem o comentário de Godop aqui. O nome da função, a mesma coisa e a descrição. Vamos ver se é a mesma coisa. Formats e defaults. Deixa eu copiar sprintf, format, corrente, format. Vamos olhar que é a mesma coisa. Se eu dar no functions, funções, sprintf. Você note que esse texto aqui, deixa eu copiar. Vou lá aqui e corresponde ao mesmo texto do comentário aqui. Na linha anterior a assinatura da função. E assim por diante, você pode notar que o código fonte do Go também tem vários comentários. E eles servem para a geração de documentação através do Go Doc. Voltando com solidar para o Go, você também pode adicionar uma documentação, comentário para o pacote inteiro. Para fazer isso, você vai lá na linha anterior a package, que tem a palavra chave package. Crio a nova linha acima com o comentário. Barra, barra e escreve package. Espaço o nome do pacote no meu caso com solidar. Tem funções para converter um mapa de query string para... Funções para converter um mapa de chaves e valores para uma query string. Descionar na linha anterior. Deixa eu salva isso. Volto na minha terminal Go Doc com solidar. Já mostra que package com solidar tem funções para converter um mapa de chaves e valores para um query string. A descrição apareceu aqui. Então com esse Go Doc já aqui, eu quero publicar uma nova versão do meu modo. No terminal eu vou dar o Get status, notas que não estão monitoradas. Vou adicionar Get Add com solidar, que é a nova máscara. Vou dar o Get Tardenove, vou dar o Get Dip para a stage. Vou adicionar novo arquivo, o Get Comet, para adicionar pacote com solidar. Vou dar o Get Push, vou adicionar ou marcar esse commit com uma nova versão 0.4.0. O Get Tag, se passa o traço A, V, 0.4.0. Vou chamar o release, o lançamento, V, 0.4.0. Sai, salva assim, ok. Get Push, traço traço tags. Deixa eu ir lá no GitHub. A nova janela. O botucon, deixa logo aqui. Tem um minuto por favor. Espera aí, tá? Tá aqui. Acabamos de publicar a nova versão V, 0.4.0. Olha o que eu fiz. Vou dar o Get Push, o Get Push, o Release, o Release. Vou dar o Get Push, o Release, o Release, o Release. Está aqui. Acabamos de publicar a nova versão V, 0.4.0. Olhando o código, agora tem que consolidar aqui. Tá? Então, vamos voltar, agora a gente pode usar isso lá do pacote consumidor. Se quer demonstrar o uso do pacote consumidor, o Import, tá? Como vai ser diferente. Pasta mudar a pasta. Então, vamos... Eu volto aqui, termino, vou dar Code, vou abrir o Go, Módulo Consumidor. No Módulo Consumidor, eu quero fazer a operação reversa na linha 15, nova linha 15. Eu vou fazer o seguinte. Eu vou... Então, eu quero chamar Consolidar, ponto, mapa para stream. Esse query map que é o resultado da chamada para analisar. Então, esse resultado vai ser uma string, né? Aqui, vai query string, revestida. Falo é string, igual, tipo string, que vai dar o fmt.println, query string, revestida. Ele não sabe de onde Consolidar vem, então, só adicionar aqui no Import. A versão que a gente tem do GoModuloBioTec ainda, 030. Então, não vai funcionar, acho que a gente vai transicionar o Import. Mas, espera aí. Então, no Import, você vai fazer o seguinte, é só adicionar github.com, barra nbkModuloTec, barra Go, traçoMódulo, traçoBiblioteca, da mesma maneira anterior, mas em vez de barra analisador, você fala barra. Consolidar, que é aquele diretório que a gente fez. Obviamente, vai dar erro porque não tem a nova versão ainda. Não é aqui, desculpa, estou no lugar errado. Eu tenho que cd para o GoModulo Consumidor, Go, BuildMemopropagoo. Então, está adicionando aqui que não tem esse aqui. Então, deixa eu olhar no GoModulo. Você pode atualizar o negócio, se eu falar Go, Barra nbkModuloTec, ou é Get, acho que vai ser GoGet, GoModulo, Biblioteca, Arroba, V040. E funciona, eu vou instalar. Vamos dar um olhado no GoSum, para que vai mudar. Vou dar um olhado no GoSum, para que vai mudar. Deixa eu olhar, sim. Vou dar um olhado no GoSum, para que vai mudar. E o que é isso? Deixa eu olhar o erro. Módulo encontrado, mas não contém pacote. Vou falar GoGet. Então, GoGet fez o upgrade. Eu vou instalar. Require v040, correto. Agora vai Go, BuildMemopropagoo. Conte o barra bem. A segunda printLn, final de interagência, busca igual termo, 100, ordem igual 10. Então, tonou direitinho. Eu quero só dar um olhado aqui de novo no GoGolModoBiblioteca. Você olha no site do pkg.gol.dev, ele já pegou a versão 0.4.0 e já detectou que tem o consolidar. Vou clicar em consolidar. Documentation, não tem. Dá o idado. Vale GoMod, não tem licença, tag, bolo, e a mão vai. Certo. Enfim, pareceu aqui, certo? É isso mesmo. É visando o que a gente fez. Criamos um novo pacote chamado Solidar. O Solidar tem seu próprio direitório no módulo Biblioteca. No arquivo criamos a função mapa para Swing, que leva como entrada o mapa que foi gerado pela função do analisador, analisar, e retorna o one string no formato. Aprendemos também a fazer comentários na maneira do GoDoc para documentar o nosso código. Basta adicionar o comentário na linha anterior, aquela coisa que você quer comentar. Não se esqueça de copiar o mesmo nome nesse caso da função, você tem que ter o mesmo nome da função como a primeira palavra do comentário. O comentário tem que começar com a palavra que corresponde ao nome da coisa que você quer comentar. Pode também fazer o comentário sobre o pacote em todo, na linha anterior, ao declaração do package. Nós publicamos uma nova versão no GitHub e automaticamente também detectou lá no pkg.go.dev. Usamos no pacote consumidor. Nós fizemos o upgrade com o GoGet e o caminho do modo, ele atualizou e fez o upgrade da versão 030 para 040. Com isso a gente fez a demonstração da chamada do mapa para a string e funcionou direitinho. Eu termino aqui fazendo o GoGetStars e atualizar o squad para vocês verem no GitHub. GoSum em português. Comentos. Usamos a função mapa para a string. Tá bom por essa aula, muito obrigado por assistir, deixa o seu like, deixa também comentar 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: