Aula 02
Como Criar um Modulo Biblioteca de Golang (go mod init) para Analisar Consulta Query String
Summary
Resumo da Aula sobre Módulos em Go
Nesta aula, o instrutor ensina como definir um projeto em Go como um módulo, criando uma biblioteca que pode ser importada por outros projetos. A biblioteca em questão incluirá uma função para analisar uma query string de uma URL.
Objetivos da Aula
- Configurar um projeto Go como módulo.
- Criar uma função para analisar query strings.
- Explicar a estrutura do arquivo
go.mod
.
Passos Realizados
-
Estrutura do Projeto:
- O instrutor cria um diretório chamado
Go-modulo-biblioteca
e um arquivoanalisador.go
.
- O instrutor cria um diretório chamado
-
Inicialização do Módulo:
- O comando
go mod init
é utilizado para iniciar um novo módulo, fornecendo o caminho do repositório no GitHub (exemplo:github.com/NVKModutech/GoModuloBibliotech
).
- O comando
-
Criação do Arquivo
go.mod
:- Um arquivo
go.mod
é criado, contendo informações sobre o módulo e a versão do Go utilizada (1.16.5).
- Um arquivo
-
Implementação da Função
Analisar
:- A função
Analisar
é definida para converter uma query string em um mapa de pares chave-valor. - O instrutor explica a importância de que a função seja exportada (primeira letra maiúscula).
- A função
-
Processamento da Query String:
- A função usa métodos como
strings.Split
para dividir a query string em pares e, em seguida, em chave-valor.
- A função usa métodos como
-
Testando a Função:
- As operações realizadas são testadas para garantir que a implementação funcione conforme o esperado.
-
Preparação para Hospedagem:
- O instrutor menciona que a biblioteca deve ser hospedada em um repositório, como o GitHub, para que possa ser utilizada por outros projetos.
Conclusão
A aula conclui que agora o diretório é um projeto Go com uma biblioteca pronta para ser importada, e que a parte de hospedagem da biblioteca será abordada na próxima aula.
Nota: Este resumo oferece uma visão geral dos principais tópicos e passos da aula sobre como trabalhar com módulos em Go.
Video Transcript
Lá pessoal, nesta aula eu vou te ensinar como definir o projeto de Go como módulo.
Então vai ser assim.
Vamos supor que a gente vai ter esse projeto e vai ser como se fosse uma biblioteca.
E essa biblioteca seria importada por outros projetos de Go.
No exemplo que eu vou dar, eu vou fazer uma função para analisar uma query string,
analisador de consulta.
Sabe quando você tem a URL e tem aquela parte quando você tem o final de interrogação,
seguido de pares de chave e valor separado por sinal de igual e cada pares separado por um ampersand.
Então esse vai ser a função que a gente vai colocar nessa biblioteca e outros projetos irão consumir essa biblioteca.
Tá certo?
Então vamos começar aqui.
Aqui eu tenho no meu terminal, eu já criou a pasta chamada Go,
traço módulo, traço biblioteca.
E eu tenho um arquivo chamado analisador.go que eu criei.
Eu gostaria de tornar esse diretório um projeto de Go.
Para poder fazer isso, eu vou rodar o comando de iniciar um projeto, um módulo.
Isso é parecido como se você vendo JavaScript, NPM, é o NPM init,
sabe aqueles comandos de criar um arquivo de projeto, NPM init, yeslint init, assim por diante.
Tá bom?
Antes disso, queria te dizer que a minha versão do Go é 1.16.5,
pode ser que esse comportamento das coisas que eu faço dos comandos do terminal seja diferente de versões anteriores.
Então esse detalhe.
Pronto, então vamos dizer Go, mod, esse é o comando que vai ser das coisas relacionadas ao módulo init.
E agora temos que dizer o caminho desse módulo, né?
Como se fosse uma espécie de nome ao módulo.
O lance é que no Go os módulos são armazenados em repositórios, por exemplo, repositório de Git.
Então tem vários sites que você pode hospedar.
Um site muito popular para hospedar repositórios é o GitHub.com.
Então nesse exemplo, eu já sei que eu vou criar um repositório e vou armazenar no site GitHub.com.
Então eu vou incluir no caminho o caminho para o meu repositório, GitHub.com.
Então eu vou dizer GitHub.com, o barro, o nome da conta, o usuário, a organização, qualquer coisa.
No meu caso eu vou dizer NVKModutech, barro, o nome do repositório.
Eu vou dizer que é o nome GoModulo, bibliotech.
É claro que não precisa ter isso criado naquele site ainda, né?
A gente só precisa de algum identificador para que o comando GoMod possa incluir no arquivo que ele vai gerar.
Então GoMod, init, caminho, seu módulo.
Normalmente o site hospeda o seu nome de conta, barro, o nome do repositório.
Então fala aqui Go, criando novo arquivo Go.mode, módulo, GitHub.com, barro, NVKModutech, barro, Go, módulo, bibliotech.
Vamos dar o LS aqui, nós temos agora um novo arquivo chamado Go.mode.
Vou aqui no meu editor de texto, no background.
Eu estou usando o VJStory Code, desse vídeo, VSCode.
Clico no arquivo Go.mode, você note que a primeira linha aparece, palavra module, indica o módulo, espaço e o caminho, né?
Eu tinha escrevido, escrito no terminal.
Na linha 3 eu tenho a definição da versão do Go, Go, espaço 1.16, porque essa é a minha versão instalada.
E ele espera que minha biblioteca, se for incluído em outros projetos, que a versão seja no mínimo 1.16.
Note que o arquivo é bem simples, porque não tem nenhuma outra dependência.
Normalmente projetos têm várias dependências.
E essas vão aparecer aqui nesse arquivo também, Go.mode, na parte de requerer, require.
Como isso é uma biblioteca que não tem nenhuma dependência, não vai aparecer aqui.
Mas quando a gente for lá no projeto que vai consumir essa biblioteca, a gente vai ter no Go.mode, daquele projeto, a inclusão do caminho para essa biblioteca aqui.
Nesse caso seria o nome, o caminho aqui definido na linha 1.
Tudo certo? Agora, tornamos esse diretor em um projeto de Go, com a criação do arquivo Go.mode.
Agora vamos clicar aqui nesse arquivo que eu criei chamado analisador.go.
Então vou te explicar qual é a função aqui.
Então esse pacote vai ser usado para poder converter essa string aqui, com a query string de um URL.
Se você já viu no seu navegador, na barra de endereço, às vezes tem no final o sinal de interrogação,
seguido desses pares, chave igual valor, separado pelo ampersand.
Então é chamado search ou query string.
Se for traduzir, sei lá, chama string de consulta.
Então esse analisador vai ser para fazer o processo de passe.
Então eu vou tornar uma string em um mapa de string, como índice indexador e valor string.
Aqui busca, ordem e os valores.
Cada primeiro k é busca igual termo.
Significa que a chave será busca e o valor será termo.
No próximo par, ordem igual a 10, ordem será a chave e o valor será a 10.
A busca seria a palavra chave que você teria, por exemplo, no site de busca,
ou em qualquer outro site para poder buscar a palavra chave.
Ordem nesse contexto aqui seria descendente.
Se fosse letra, seria que começasse a duzer e termina no ar.
O nome da função que eu queria é analisar.
Leva como parâmetro a query string e a gente vai retornar um mapa de string.
O nome da função que é importante, a primeira letra, está maiúsculo.
Se fosse minúsculo, ninguém de fora poderia usar esse método para poder disponibilizar essa função.
Para outros projetos utilizarem quando importar, temos que exportar a função.
Basta tornar a primeira letra maiúsculo, caso a maiúsculo.
Agora a função analisar foi exportada.
Vamos lá.
Vamos ver o que fazer.
A primeira característica, não importa, sempre será a final de interrogação,
seguido de várias coisas separadas pelo OMPC,
então a gente pode dar o split nessa string, depois de trair todos depois do primeiro.
Basta, deixa eu ver essa parte aqui.
Quero te mostrar uma coisa.
Quero a query string.
Quero, na verdade, dar a substring.
Ele é ele sim e isso traina de muita build.
Vamos lá ver.
Aqui.
Vamos colocar a variável aqui para fazer o seguinte.
Vamos fazer o seguinte.
Pares, vai ser igual a que esses pares serão
Rage Strings, então vamos colocar slice aqui de string.
Eu vou assim.
Do primeiro adiante deixa eu só ver se está correto.
Eu vou ir aqui no navegador e no playground, Play, Roland.org
Só para te mostrar isso.
Eu disse Query string, só como exemplo, vou buscar igual a termo e
ordem é S, pa, Query string.
Se eu dar o println para o string, a gente espera que como é
se eu disser um, dois pontos, peixe a coxete, ele tira o primeiro
caractere e extrai do segundo em diante seguido.
Perto está aqui para demonstrar que funciona.
E com isso a gente vai dar o split, mais o split vem da onde do strings.
Eu referenciar o modo strings, tem a função split.
Faço o primeiro argumento que é string, segundo será o separador, que nesse
caso é Whamper and abre aspas, %feature parent.
Se quiser tentar no navegador no playground, Play, Roland.org
Play aqui strings.split, %
Deixa eu clicar nesse import para ele poder auto importar.
Note que agora tem uma...
Ele torna slice, eu acho.
Botar o mouse em cima do split, retorna uma slice de strings,
está correto.
Agora, esses são os pares, agora a gente vai ter que ir para cada par,
temos que dividir de novo, mas o separador é o igual.
Vamos lá.
Black.
Dao for loop, Ui.
Igual a zero.
Ui é menor que a length pares e mais mais.
Ali não foi...
Deixa eu ver o que está dizendo aqui.
Play, vou usar os dois pontos igual aqui.
Aí vai certo, agora vamos pegar primeiro a chave,
vai ser uma string, vai ser pares, abre crochet e...
A verdade eu tenho que dividir primeiro.
Deixa eu dividir aqui pares, crochet e...
Vamos dar o split de novo, strings.split.
O separador agora vai ser igual.
Isso vai dar em duas, não é?
Vamos deixar eu ver...
Vamos dizer va, chave valor.
Vai ser partida de string igual.
Aí pega chave valor, sub zero vai ser a chave e vai valor string,
chave valor sub um.
Então a gente já tem a chave, tem o valor, agora vamos criar um...
Um mapa aqui, então eu vou dizer o...
Fala...
O resultado, o hash map.
Vou falar mapa.
O tipo de...
Vai mapa, vai ser igual a um map de string para string e não tem nada.
Então aqui mapa na chave vai ser igual o valor dentro do loop.
E com isso eu vou dar o return do mapa.
A declare...
O que que tá? A declare, fang.
Eu vou dar porque eu botei do lado errado.
O tipo da variável é do lado direito do nome da variável.
É devido a costume de outras linguagens em que a gente escreve o tipo antes.
Desculpe por isso.
Com isso a gente pode testar isso, eu copio esse negócio para o playground só para te mostrar.
Eu vou definir com...
O que pode ser grande mesmo?
Deixa eu dar aqui o...
A gente já lene, vou falar...
Analisar...
Query string...
Já que tem um map, busca termo, ordem 10.
Então só no direitinho.
Eu tento referenciar isso aqui.
FMT, print elenico, analisar query string, salve a busca.
Eu espero ver termo.
Correto, se eu dar ordem eu espero ver 10.
Correto.
Então nossa implementação tá correta, voltando ao editor de texto aqui.
Pronto.
Temos o arquivo já com a implementação da função.
Tá no pacote chamado analisador.
Depende da biblioteca padrão strings.
Mas não precisa pôr no mod que não é de precer a pessoa externa.
Agora vamos para poder usar importar essa biblioteca de outro projeto, que é o projeto consumidor.
A gente vai ter que primeiro hospedar essa biblioteca nossa no caminho que tinha dito do comod.
Nesse caso, gator.com.br, NVK, Mundutech, mas vou trazer o modo, traça biblioteca.
Isso que eu vou fazer na próxima aula, tá certo?
Então até lá.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: