Diretórios e packages especiais

No post de hoje vamos falar um pouco sobre nomes reservados para packages e pastas.

Main

Package main é o principal package de um programa Go. É nesse package que vamos colocar nossa função main, que é a primeira função a ser executada.

package main

import "fmt"

func main() {
    fmt.Println("Olá Mundo!")
}

O package main só deve existir em programas executáveis, ou seja, caso você esteja fazendo uma lib, esse package não deve existir.

Internal

Ao criar esse package no seu programa ou lib, você estará limitando quem pode importar seus packages internos, pois eles só poderão ser utilizados por packages que estiverem em seu diretório pai.

Meio confuso, não?! Então vamos para um exemplo gráfico.

No exemplo acima, tudo o que for colocado dentro da ./internal estará disponível para todo o programa. Já no caso da ./pkg/a/b/internal, tudo que estive dentro dela só estará disponível para os packages pkg/a/b/c e pkg/a/b/d.

Se você quiser saber mais sobre, clique aqui e veja a proposta original (em inglês).

Pkg

A pasta pkg não é um pasta especial do Go, mas é uma convenção muito utilizada. Normalmente nessa pasta colocamos tudo o que for lib interna que possa ser importada por qualquer outra parte do programa ou até mesmo por outros programas.

Vendor

Essa é uma pasta especial do Go onde podemos colocar nossas dependências. Para copiar as dependências para essa pasta, tudo o que precisamos fazer é executar um go mod vendor.

Após executar esse comando todos os imports externos que temos, ao invés de serem buscados na internet serão importados diretamente da pasta vendor.

Testdata

Essa pasta é ignorada por todos as ferramentas do Go, sendo o lugar perfeito para guardar dados que serão usados em testes, exemplos de testes e etc.

Deixem suas dúvidas nos comentários.

Até a próxima!


Se inscreva na nossa newsletter

* indicates required

Deixe uma resposta