Criando um CRUD simples em GO

Patrick Isidoro
BaixadaNerd
Published in
6 min readMay 28, 2018

Go ou Golang, é a linguagem de programação open source da Google. Criada em 2007 por Rob Pike e Ken Thompson, foi lançada oficialmente em meados de 2009. Não irei entrar em detalhes sobre os criadores e os motivos que influenciaram sua criação. Indico demais que procurem sua história na internet, é um material super interessante (em breve postarei mais detalhes em outro artigo sobre a linguagem para quem estiver interessado).

Neste início, gostaria apenas de registrar meu primeiro contato com Go.

Estou iniciando em programação e não conheço muito bem nenhuma linguagem específica (ainda fico em dúvida se opto por Front ou Back End.. rs), nas últimas semanas estive em um teste para uma vaga de estágio onde o teste seria em Golang. Porém nunca havia lido sua documentação.
Acessando os sites A Tour of Go, Go by Example, e o livro Programando em Go (Caio Filipini - Casa do Código) fui me habituando com a syntax da linguagem, e gostei muito. Ela me parece ser bem robusta, é incrivelmente ‘leve’ em termo de uso de memória, e é fortemente tipada, a linguagem foi fluindo aos poucos e acredito que seja uma boa escolha para iniciantes também (claro que será mais fácil se você conhecer um pouco de C, mas os conteúdos pela internet são bem simples e intuitivos, o que torna o aprendizado fácil e bem interessante).

O artigo ficou longo, tentei explicar o melhor possível. Se você seguir o passo a passo, no final você terá um código parecido com o que está nesse repositório ;)

Enfim, vamos ao que interessa..

Nesse tutorial, tentarei mostrar de forma simples, a criação de um CRUD em Go.
Para quem não tem familiaridade com este termo, CRUD é um acrônimo de Create, Read, Update and Delete da língua inglesa. Nesse ‘tipo de programa’, podemos identificar facilmente as operações do CRUD. São elas:
C = Criar ou adicionar entradas.
R = Ler, recuperar ou ver entradas existentes.
U = Atualizar/Editar entradas existentes.
D= Remover entradas existente.

Agora que temos um overview sobre o que é um CRUD, Vamos iniciar nosso projeto.

Com o ambiente pronto, vamos criar uma pasta do nosso projeto e dentro dela criarei nosso arquivo principal, o arquivo do DB para criar a tabela e também uma pasta para colocarmos nossos templates. A Estrutura ficará como a seguir:

Estrutura do projeto.

Em meus projetos, costumo começar com o Banco de Dados. Go nos fornece um pacote embutido chamado “database/sql”, isso fornece apenas uma interface leve sobre SQL. Deve ser usado em conjunto com um driver de banco de dados, nesse projeto irei utilizar o “https://github.com/go-sql-driver/mysql”, muito prático, suporta database/sql e é escrito em GO puro.

Para criar nossa tabela, você pode seguir o exemplo abaixo.

Feito isso, iremos para nosso arquivo main.go e importaremos o pacote para suporte SQL e o driver mencionado anteriormente. Em seguida, configuramos nossas rotas e a porta que iniciaremos nosso servidor local, bem como a conexão com o Banco.

Note que incluí também os pacotes que gerenciam as URLs e templates de nossa aplicação. Lembre-se sempre de comentar seus códigos, pois auxilia demais a legibilidade dos trechos de código.

Na linha 10~15: criamos a Struct que usaremos para exibir dados no template, lembrando que deve ser exatamente as mesmas que temos em nosso DB.

Na linha 17~29: temos a função que faz a conexão com o Banco. Não esqueça de incluir o usuário, pass, e nome do BD entre as aspas vazias.

Inclua o trecho de código abaixo para renderizar os templates da pasta tmpl/.

Em seguida, vamos criar as funções do nosso CRUD. E após isso começaremos a criar nossos templates. Insira o código abaixo após a função dbConn() e antes da função main(). Vamos iniciar com a função Index, esta será usada para renderizar nosso arquivo Index.tmpl.

Após essa função, iremos incluir a função que irá renderizar os dados na tela e em seguida incluímos a função New, que exibe o formulário para inserir novos dados e também a função Edit que servirá para editarmos os dados do formulário. Essas funções apoiam a renderização do conteúdo de nossos arquivos de templates.

Note que as funções iniciam abrindo a conexão com o BD,a função monta a struct, depois realiza as consultas no banco,outra função armazena as variaveis, depois envia os valores para a struct, em seguida mostra o template e encerra a conexão do BD.

Feito isso, podemos criar as funções que efetuarão as ações do nosso CRUD. Comecei com a função Insert, que irá inserir dados no nosso formulário. A função Update, que irá atualizar os valores já no banco de dados, e a função Delete, como é suposto, essa serve para deletar os dados do nosso banco.

Veja que toda função começa abrindo a conexão com o banco de dados, realiza uma consulta e trata os erros (Por falar em erros, não esqueça de importar o pacote “log” no início do projeto). Todo o código está bem comentado, acredito que dispensa muita explanação sobre as funções.

Feito o backend da nossa aplicação, iremos agora iniciar a construção de nossos templates. Nesse projeto fiz uso de um pacote que gerencia os templates, e no início de nossa aplicação, já incluímos o trecho de código que renderiza nossos arquivos. A princípio usarei basicamente códigos html, você pode estilizar seu projeto da forma que preferir.

Note o conteúdo da pasta tmpl, iremos separar os trechos de código que se repetem em arquivos próprios, a fim de reutilizar códigos. E temos também os arquivos de rota das funções do CRUD.

Em nosso Index.tmpl terá o conteúdo inicial da aplicação, e cada função do CRUD nomeado com sua respectiva característica. Veja abaixo o conteúdo de cada arquivo.

index.tmpl
header.tmpl
footer.tmpl
menu.tmpl
new.tmpl
show.tmpl
edit.tmpl

Não seja preguiçoso, escreva seu código, não fique só no ctrl+c - ctrl+v.. rs’

Bom, vamos ao que interessa.. Irei explicar bem superficialmente os códigos, pois todos são bem simples e auto-explicativos.

Note que cada arquivo inicia com sua definição ({{ define “…”}}), seria como um método export para chamarmos no backend e em outros templates. Temos também a importação dos templates Header, Menu e Footer em cada um deles, e por fim, encerramos o template indicando a tag {{ end }}. Ou seja, nosso template começa no “define” e termina no “end”, e entre essas tags podemos utilizar basicamente todas as tags HTML e algumas outras.

Pronto, temos uma aplicação básica com as funções de um CRUD.

Abra seu navegador e teste o projeto. Acesse localhost:9000 (que foi a porta que setamos), você verá a tela a seguir:

Tela inicial, sem nenhum dado
Tabela com dados incluídos

Navegue pelos links e faça os testes em cada opção disponível. Inclua dados, visualize, edite e delete várias vezes, estilize os templates, divirta-se.

Bom, chegamos ao fim desse tutorial. Espero que tenha ficado bem explicado, e que tenham conseguido êxito nesta aplicação. Sei que ficou longo esse artigo, mas tentei ser o mais explicativo possível.

Caso hajam dúvidas deixe um comentário ou entre em contato, dicas e sugestões também são bem vindas.

--

--

Patrick Isidoro
BaixadaNerd

Um pequeno gafanhoto, aprendiz padawan, amante da tecnologia e entusiasta de ethical hacking, buscando conhecimento e a procura de uma boa xícara de café..