Trilhas
/
Go
Go
/
Programa
/
Pacotes
Pa

Pacotes em Go

1 exercício

Sobre Pacotes

Em Go, uma aplicação é organizada em pacotes. Um pacote é uma coleção de arquivos-fonte que ficam na mesma pasta. Todos os arquivos-fonte de uma pasta precisam ter o mesmo nome de pacote no topo do arquivo. Por convenção, os pacotes recebem o mesmo nome da pasta em que estão.

package greeting

Go oferece uma extensa biblioteca padrão de pacotes, que você pode usar no seu programa com a palavra-chave import. Os pacotes da biblioteca padrão são importados pelo próprio nome.

package greeting

import "fmt"

É possível importar vários pacotes de uma vez escrevendo-os entre parênteses.

package greeting

import (
    "errors"
    "fmt"
)

Pacotes de terceiros são importados usando a url do local do pacote. Você pode dar um apelido a um pacote na hora de importar. Isso ajuda a evitar conflitos entre nomes de pacotes:

package greeting

import (
	"errors"

	errs "github.com/pkg/errors"
)

Depois, um pacote importado é acessado pelo nome ou pelo apelido:

// using the internal errors package
errors.New("Connection not established")

// using the errors package located at github.com/pkg/errors by alias
errs.New("Connection not established")

O Go decide se um item pode ser chamado por código de outros pacotes pela forma como ele é declarado. Para tornar uma função, um tipo, uma variável ou uma constante visível fora do pacote (o que é chamado de exported), o nome precisa começar com letra maiúscula. Isso é análogo a linguagens como Java, que usam modificadores de acesso como public e private.

package greeting

// Hello is a public function (callable from other packages).
func Hello(name string) string {
    return "Hello " + name
}

// hello is a private function (not callable from other packages).
func hello(name string) string {
    return "Hello " + name
}

O mesmo vale para nomes de campos em tipos struct personalizados: nomes de campos que começam com letra maiúscula são visíveis fora do pacote, e os que começam com letra minúscula não são.

Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Pacotes

A prática está bloqueada

Desbloqueie mais 1 exercício para praticar Pacotes