Gerenciamento de dependências no Go \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 18 Horas 

 58 Min 

 56 Seg 

   Tempo restante da oferta: 18 58 56 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Gerenciamento de dependências no Go  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) [ Go ](https://www.treinaweb.com.br/blog/categoria/go) 

# Gerenciamento de dependências no Go

 Nesse artigo veremos como podemos utilizar o Go Tools para realizar o gerenciamento de dependências no Go.

 [ Cleyson Lima ](https://www.treinaweb.com.br/blog/autor/cleyson-lima) 3 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/10/o-que-e-e-como-comecar-com-golang.jpg)  

Durante o desenvolvimento de software é comum nos depararmos com certos problemas comuns, como, por exemplo, realizar a validação de um CPF, realizar requisições HTTP, conectar em um banco de dados, entre outras situações.

Porém, não seria muito produtivo termos que implementar essas funcionalidades manualmente sempre que forem necessárias, por isso, na maioria das linguagens temos a possibilidade de usarmos pacotes feitos pela própria comunidade que resolvem esses problemas e para facilitar ainda mais no processo de gerenciamento desses pacotes, nós podemos utilizar ferramentas comumente chamadas de [gerenciador de dependências](https://www.treinaweb.com.br/blog/o-que-e-gerenciador-de-dependencias)?

[  ![Lógica de Programação - Iniciando na programação](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/logica-de-programacao.svg)   Curso Lógica de Programação - Iniciando na programação Conhecer o curso ](https://www.treinaweb.com.br/curso/logica-de-programacao-iniciando-na-programacao)

## O que é um gerenciador de dependências?

Um gerenciador de dependências é uma ferramenta que ajuda a gerenciar as bibliotecas e pacotes que um projeto precisa para funcionar corretamente. Ele permite que as dependências sejam facilmente instaladas, atualizadas e removidas, sem a necessidade de gerenciá-las manualmente.

Isso pode economizar muito tempo e evitar erros de compatibilidade entre diferentes versões de bibliotecas. Em Go, o gerenciador de dependências padrão é o [Go Modules (Módulos Go)](https://go.dev/blog/using-go-modules), que é uma ferramenta integrada ao Go e facilita muito o processo de gerenciamento de dependências.

## Gerenciando dependências no Go

[  ![Lógica de Programação - Avançando na programação](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/logica-de-programacao.svg)   Curso Lógica de Programação - Avançando na programação Conhecer o curso ](https://www.treinaweb.com.br/curso/logica-de-programacao-avancando-na-programacao)

A partir da versão 1.11, passamos a utilizar o recurso chamado de Go Modules para realizar o gerenciamento de dependências no Go. Antes era necessário realizar todo o processo de gerenciamento de dependências de maneira manual, ou, mediante ferramentas desenvolvidas pela comunidade, como, por exemplo, a [ferramenta dep](https://github.com/golang/dep).

### Iniciando um módulo

Primeiramente, para podermos realizar as ferramentas de gerenciamentos de dependências em projetos Go, precisamos inicializar um módulo em nosso projeto. Para isso executamos o seguinte comando:

```bash
go mod init nome-do-modulo

```

Ao executar o comando acima iremos transformar o nosso projeto em um módulo Go, o que habilita a possibilidade de utilizarmos o gerenciamento de dependências. O idela é que o nome do módulo seja um nome único e por isso é comum usarmos o caminho completo para um repositorio de algum sistema de controle de versão, como, por exemplo, o GitHub.

```bash
go mod init github.com/treinaweb/meu-projeto-go

```

Quando o comando `go mod init` é executado, serão criados dois arquivos na raiz do projeto, são eles:

- **go.mod**: este arquivo é responsável por descrever todas as dependências do projeto e suas respectivas versões.
- **go.sum**: este arquivo é responsável por armazenar um hash de cada dependência do projeto, garantindo que as dependências sejam baixadas de forma segura e confiável.

### Como encontrar um pacote para usar?

[  ![Clean Code e SOLID - Escrevendo código limpo e escalável](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/clean-code.svg)   Curso Clean Code e SOLID - Escrevendo código limpo e escalável Conhecer o curso ](https://www.treinaweb.com.br/curso/clean-code-e-solid-escrevendo-codigo-limpo-e-escalavel)

Para encontrar um pacote para usar em um projeto Go, podemos pesquisar em repositórios públicos como o [GitHub](https://github.com/) ou o [pkg.go.dev](https://pkg.go.dev/). O [pkg.go.dev](https://pkg.go.dev/) é uma ferramenta específica para a documentação de pacotes e bibliotecas em Go, e pode ser uma fonte útil para encontrar pacotes relacionados a uma funcionalidade específica.

![Print da tela do repositório pkg.go.dev com uma busca por pacotes de UUID](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/go-packges-repository-search.png)

Ao clicar em algum dos pacotes encontrados, será exibido uma página com todas as informações do pacote (como instalar, documentação, versões e etc).

![Captura de tela do repositório pkg.go.dev com os detalhes do pacote github.com/google/uuid](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/go-packges-repository-package-details.png)

### Como instalar um pacote no projeto?

Agora que já sabemos como iniciar um módulo para podermos ativar o gerenciamento de dependências em projetos Go e também sabemos como encontrar pacotes úteis para uso. Precisamos saber como adicionar esses pacotes como dependências de nosso projeto.

Para isso, basta executar o comando `go get` seguido do identificador do pacote desejado, para sabermos o identificador do pacote basta o nome do repositório do pacote desejado, no exemplo de pesquisa do tópico anterior o identificador do pacote é `github.com/google/uuid`, então o comando completo fica:

```bash
go get github.com/google/uuid

```

Ao executarmos o comando acima, o gerenciador de pacotes do Go irá buscar pelo repositório solicitado e então irá realizar o download da última versão disponível e também irá atualizar os arquivos `go.mod` e `go.sum` com as devidas informações dos pacotes baixados.

Se visualizarmos o conteúdo do aquivo `go.mod` veremos algo similar a isso:

```
module github.com/treinaweb/meu-projeto-go

go 1.20

require github.com/google/uuid v1.3.0 // indirect

```

Veja que, nesse arquivo temos o nome do nosso módulo, a versão da linguagem que estamos utilizando e por fim as dependências do projeto. Outro ponto importante de ser observado é que a nossa dependência está marcada como `indirect`, isso acontece, pois a dependência foi adicionada no projeto, porém, ainda não foi utilizada em nenhum lugar. O gerenciador de dependências do Go analisa os arquivos do código para verificar quais dependências de fato estão sendo utilizadas.

### Como instalar uma versão específica?

Como vimos, ao realizar o comando `go get` é feito o download da versão mais recente do pacote solicitado, porém, também é possível realizar a instalação de uma verão especifica do pacote desejado.

Para instalar uma versão específica de um pacote, basta adicionar o sufixo `@` seguido da versão desejada ao final do identificador do pacote no comando `go get`. Por exemplo, para instalar a versão 1.2.3 do pacote `github.com/google/uuid`, basta executar o seguinte comando:

```bash
go get github.com/google/uuid@v1.2.3

```

Dessa forma, o gerenciador de pacotes do Go irá baixar e instalar a versão especificada do pacote em questão.

### Como atualizar as versões das dependências do projeto?

Para atualizar as versões de todos os pacotes listados no arquivo `go.mod` do projeto, basta executar o comando `go get -u`.

### Como atualizar uma dependência específica?

[  ![Go Básico](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/go.svg)   Curso Go Básico Conhecer o curso ](https://www.treinaweb.com.br/curso/go-basico)

Para atualizar uma dependência específica, basta executar o comando `go get -u` seguido do identificador do pacote e da versão desejada. Por exemplo, para atualizar o pacote `github.com/google/uuid` para a versão mais recente, basta executar o seguinte comando:

```bash
go get -u github.com/google/uuid

```

Ao executar o comando acima, o gerenciador de pacotes do Go irá baixar e instalar a versão atualizada do pacote em questão e também irá atualizar os arquivos `go.mod` e `go.sum` com as devidas informações das dependências atualizadas.

### Como sincronizar as dependências do código?

Para sincronizar as dependências do código, basta executar o comando `go mod tidy`. Esse comando irá verificar quais dependências são usadas no código e irá adicionar ou remover as que são necessárias ou desnecessárias, respectivamente. Isso ajuda a manter o arquivo `go.mod` atualizado e consistente com o código atual.

Também podemos utilizar o comando `go mod tidy` para remover as dependências do projeto, para isso basta excluir a dependência indesejada do arquivo `go.mod` e então rodar o comando `go mod tidy`.

## Conclusão

Gerenciar dependências em projetos Go é uma tarefa essencial para manter a consistência e a estabilidade do código. Com o Go Modules, isso se tornou muito mais fácil e prático, permitindo que as dependências sejam facilmente instaladas, atualizadas e removidas. Além disso, é importante lembrar que a [documentação oficial do Go](https://go.dev/doc/) e o [pkg.go.dev](https://pkg.go.dev/) podem ser bastante úteis na hora de encontrar pacotes e bibliotecas para utilizar em seus projetos.

Por fim, caso queira aprender mais sobre a Go e sua infinidade de recursos saiba que aqui na [TreinaWeb](https://www.treinaweb.com.br/) temos o curso [Go Básico](https://www.treinaweb.com.br/curso/go-basico) que possui **05h30 de vídeo** e um total de **37 exercícios**.

Veja quais são os tópicos abordados durante o curso Go Básico:

- Compreender a sintaxe básica da Golang;
- Compreender conceitos básicos envolvidos na Go, como ponteiros de memória;
- Utilizar as estruturas básicas da linguagem, como declaração de variáveis;
- Utilizar as principais estruturas de conjuntos da Go, como arrays, slices e maps;
- Entender as principais funções na Golang que são built-in, como make(), new(), panic(), recover() e defer;
- Organizar o código em pacotes e utilizar os principais pacotes disponibilizados pela linguagem;
- Entender como podemos utilizar concorrência com a Golang, inclusive com técnicas como os channels;
- Entender o que são as structs na Go e como podemos utilizar um pouco de orientação a objetos com a linguagem;
- Realizar operações de I/O no sistema operacional, como a criação e escrita de arquivos.

- [ #Gerenciador de Dependências ](https://www.treinaweb.com.br/blog/tag/gerenciador-de-dependencias)
- [ #gerenciador de pacotes ](https://www.treinaweb.com.br/blog/tag/gerenciador-de-pacotes)
- [ #go ](https://www.treinaweb.com.br/blog/tag/go)
- [ #golang ](https://www.treinaweb.com.br/blog/tag/golang)
- [ #go tools ](https://www.treinaweb.com.br/blog/tag/go-tools)
- [ #go get ](https://www.treinaweb.com.br/blog/tag/go-get)
- [ #go modules ](https://www.treinaweb.com.br/blog/tag/go-modules)

Autor

 ![Cleyson Lima](//secure.gravatar.com/avatar/db30efb102ffa5d5204cebe12060b111?d=mm)

## Cleyson Lima

 Professor, programador, fã de One Piece e finge saber cozinhar. Cleyson é graduando em Licenciatura em Informática pelo IFPI - Campus Teresina Zona Sul, nos anos de 2019 e 2020 esteve envolvido em vários projetos coordenados pela secretaria municipal de educação da cidade de Teresina, onde o foco era introduzir alunos da rede pública no mundo da programação e robótica. Hoje é instrutor dos cursos de Spring na TreinaWeb, mas diz que seu coração sempre pertencerá ao Python. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/cleyson-lima)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/10/o-que-e-e-como-comecar-com-golang-400x280.jpg)  [ Guias ](https://www.treinaweb.com.br/blog/categoria/guias) 

     3 anos atrás

    ##  [ Guia da linguagem Go ](https://www.treinaweb.com.br/blog/guia-da-linguagem-go) 

     Nesse guia de Go você aprenderá o necessário para criar os seus primeiros softwares com a linguagem de programação Go. Acesse agora mesmo!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/introducao-ao-maven-aprenda-como-criar-e-gerenciar-projetos-java-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     6 anos atrás

    ##  [ Introdução ao Maven, aprenda como criar e gerenciar projetos Java ](https://www.treinaweb.com.br/blog/introducao-ao-maven-aprenda-como-criar-e-gerenciar-projetos-java) 

     Neste artigo veremos como instalar o Maven e como podemos utilizá-lo para nos auxiliar na criação e no gerenciamento de dependência de um projeto Java.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/a6GH8712a1-400x280.jpg)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     10 anos atrás

    ##  [ O PHP e o seu ecossistema nunca estiveram tão fortes ](https://www.treinaweb.com.br/blog/o-php-e-o-seu-ecossistema-nunca-estiveram-tao-fortes) 

     O PHP nunca esteve tão forte. Nesse artigo, algumas desconstruções de famosas falácias acerca do PHP e alguns pontos que o fazem ser uma completa plataforma para a Web.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/01/criando-uma-api-com-spring-data-jpa-e-spring-web-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     5 anos atrás

    ##  [ Criando uma API com Spring Data JPA e Spring Web ](https://www.treinaweb.com.br/blog/criando-uma-api-com-spring-data-jpa-e-spring-web) 

     Neste artigo vamos aprender como criar uma API com persistência de dados utilizando o Spring Web MVC e o Spring Data JPA.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2024/01/WEB-JARS-400x280.jpg)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     3 anos atrás

    ##  [ WebJars: Simplifique o gerenciamento de dependências front-end ](https://www.treinaweb.com.br/blog/webjars-simplifique-o-gerenciamento-de-dependencias-front-end) 

     Otimize seu desenvolvimento Java! Descubra como o WebJars simplifica o gerenciamento de dependências front-end. Integre com facilidade e eficiência.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/12/npm-voce-sabe-o-que-da-para-fazer-com-ele-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     3 anos atrás

    ##  [ Introdução ao gerenciamento de projetos Node.js com npm ](https://www.treinaweb.com.br/blog/introducao-ao-gerenciamento-de-projetos-node-js-com-npm) 

     Neste artigo sobre Introdução ao gerenciamento de projetos Node.js vamos aprender os principais comandos utilizados no npm.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/03155235/GERENCIADOR-DEPENDÊNCIAS-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     7 anos atrás

    ##  [ O que é gerenciador de dependências? ](https://www.treinaweb.com.br/blog/o-que-e-gerenciador-de-dependencias) 

     Uma ferramenta que facilita a vida do desenvolvedor e o auxilia no gerenciamentos das bibliotecas utilizadas no projeto que estiver trabalhando.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/07/03163125/SYMFONY-FLEX-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ O que é o Symfony Flex e como ele funciona ](https://www.treinaweb.com.br/blog/o-que-e-o-symfony-flex-e-como-ele-funciona) 

     Nesse post falaremos sobre os principais conceitos do Symfony Flex. Veremos desde o início como ele funciona, qual seu papel na criação da estrutura do Symfony e como ele pode nos ajudar no processo de gerenciamento de dependências do projeto.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/04/o-que-e-o-composer-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     5 anos atrás

    ##  [ Como instalar um pacote com Composer e utilizá-lo em seu projeto PHP ](https://www.treinaweb.com.br/blog/como-instalar-um-pacote-com-composer-e-utiliza-lo-em-seu-projeto-php) 

     Aprenda a instalar e utilizar o gerenciador de dependências Composer e dê o próximo passo rumo a se tornar um desenvolvedor PHP.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/SERVIDOR-HTTP-EXPRESS-JS-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     6 anos atrás

    ##  [ Criando um servidor HTTP com Express ](https://www.treinaweb.com.br/blog/criando-um-servidor-http-com-express) 

     O Express é um framework utilizado em conjunto com o Node.js. Ele possui características que facilitam o desenvolvimento de nossas aplicações web e APIs, como um sistema de rotas completo, tratamento de exceções, gerenciamento de requisições HTTP e muito mais.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/10/o-que-e-o-composer-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     6 anos atrás

    ##  [ O que é o Composer? ](https://www.treinaweb.com.br/blog/o-que-e-o-composer) 

     Veja neste artigo o que é o Composer.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/03/01154814/NUGET-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     7 anos atrás

    ##  [ O que é o NuGet? ](https://www.treinaweb.com.br/blog/o-que-e-o-nuget) 

     Um gerenciador de pacote é essencial em qualquer plataforma de desenvolvimento moderna. Para o .NET há o Nuget, o conheça em detalhes neste artigo.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **18h 58min 56s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
