Como usar bibliotecas do Go

É possível usar qualquer pacote compatível com linux/amd64 com instâncias em execução no ambiente flexível do App Engine. Nestas instruções, pressupomos que você esteja usando o comando go get para receber os pacotes diretamente de repositórios compatíveis, como GitHub, Bitbucket, LaunchPad etc.

Como declarar e gerenciar dependências

Os aplicativos do Go são organizados em pacotes que espelham a estrutura de diretórios dos arquivos do seu código-fonte. Quando você usa uma declaração de importação, os caminhos relativos na importação são interpretados. Os caminhos de importação válidos são caminhos totalmente qualificados relativos ao subdiretório src de todos os diretórios especificados em GOPATH.

Por exemplo, se GOPATH for definido da seguinte maneira:

export GOPATH=/home/fred/go

E o arquivo src1-1.go no diretório do app de exemplo contém a seguinte declaração de importação:

import "foo/bar"

Consequentemente, a CLI gcloud procura o pacote "foo/bar" no seguinte local quando você executa ou implanta o app:

/home/fred/go/src/foo/bar

Se você incluir fontes de pacotes em GOPATH, é necessário tomar cuidado para não colocar o código-fonte no diretório do aplicativo ou abaixo dele, onde o app.yaml está localizado. Se isso acontecer, problemas menores poderão ocorrer porque um pacote pode ser carregado duas vezes: uma vez para o caminho relativo ao diretório de um serviço e novamente para o caminho totalmente qualificado. Para evitar problemas, a CLI gcloud verificará o diretório do app e o GOPATH e, em seguida, informará um erro se um conflito for detectado.

Para melhores resultados, estas são as nossas recomendações:

  • Crie um diretório separado no diretório do app para cada serviço.
  • O diretório de cada serviço precisa conter o arquivo app.yaml do serviço e um ou mais arquivos .go.
  • Não inclua subdiretórios no diretório de um serviço.
  • O GOPATH precisa especificar um diretório que esteja fora do diretório do app e conter todas as dependências importadas pelo app.

Como fazer o download de pacotes obrigatórios

É possível usar o comando go get para fazer download de pacotes. Por exemplo, para fazer o download de packagename em my_repo no GitHub:

go get github.com/my_repo/packagename

Como implantar no App Engine

Para implantar o aplicativo no App Engine, você precisará implantar as bibliotecas exigidas pelo app com o código do aplicativo. Para detalhes completos, consulte Como implantar o aplicativo.