Translated GOPATH and Workspace

This commit is contained in:
Gustavo Kuklinski
2015-07-06 21:46:33 -03:00
parent b84c63d81b
commit 396562352d

View File

@@ -2,38 +2,36 @@
## $GOPATH
Go commands all rely on one important environment variable called $GOPATH. Notice that this is not the $GOROOT variable where Go is installed. This variable points to the workspace of Go on your computer (I use this path on my computer; if you don't have the same directory structure, please replace by yourself).
Os comandos em Go dependem de uma variável do sistema chama $GOPATH. Note que não é a variável $GOROOT, responsável pelo local aonde a linguagem está instalada.
Essa variável($GOPATH), marca a localização do ambiente de trabalho Go.
Em sistema UNIX-Linux, a variável do sistema deverá ser configurada da seguinte forma no arquivo `.bash_profile`
In Unix-like systems, the variable should be used like this:
export GOPATH=/home/apple/mygo
In Windows, you need to create a new environment variable called GOPATH, then set its value to `c:\mygo`( ***This value depends on where your workspace is located*** )
No Windows você precisa criar uma nova variável de ambiente chamada GOPATH, e configura-la para o diretório de trabalho, por exemplo: `c:\mygo`
It's OK to have more than one path (workspace) in $GOPATH, but remember that you have to use `:`(`;` in Windows) to break them up. At this point, `go get` will save the content to your first path in $GOPATH.
É comum ter mais de um Workspace no seu $GOPATH, mas lembre-se de usar `:`(`;` no Windows) para delimitar os diretórios. Com o $GOPATH configurado você já poderá realizar o download de pacotes externos utilizando o `go get`.
In $GOPATH, you must have three folders as follows.
Dentro do seu $GOPATH, deverá ter os seguintes diretórios:
- `src` for source files whose suffix is .go, .c, .g, .s.
- `pkg` for compiled files whose suffix is .a.
- `bin` for executable files
- `src` Para arquivos de código fonte .go, .c, .g, .s.
- `pkg` Para bibliotecas compiladas .a.
- `bin` Para executáveis
In this book, I use `mygo` as my only path in $GOPATH.
Nesse livro, vamos utilizar a pasta: `mygo` como único ambiente no $GOPATH.
## Package directory
## Diretórios de pacotes
Crie um novo arquivo chamado sqrt.go dentro da pasta `$GOPATH/src/mymath/sqrt.go` (Note que também foi criado um diretório chamado 'mymath', no qual deverá ser o nome do nosso pacote)
Create package source files and folders like `$GOPATH/src/mymath/sqrt.go` (`mymath` is the package name) ( ***Author uses `mymath` as his package name, and same name for the folder where contains package source files***)
Every time you create a package, you should create a new folder in the `src` directory. Folder names are usually the same as the package that you are going to use. You can have multi-level directories if you want to. For example, if you create the directory `$GOPATH/src/github.com/astaxie/beedb`, then the package path would be `github.com/astaxie/beedb`. The package name will be the last directory in your path, which is `beedb` in this case.
Execute following commands. ( ***Now author goes back to talk examples*** )
Todas as vezes que um novo pacote for criado, você deverá criar uma pasta com seu nome dentro de `src`. O nome das pastas costumam ter o mesmo nome do pacote que será utilizado. Você pode ter quantas pastas quiser, por exemplo: Se você criar uma pasta `$GOPATH/src/github.com/astaxie/beedb`, então seu pacote será `github.com/astaxie/beedb`. O nome do pacote sempre será o último, no caso do exemplo citado: `beedb`
Execute os comandos abaixo:
cd $GOPATH/src
mkdir mymath
Create a new file called `sqrt.go`, type following content to your file.
// Source code of $GOPATH/src/mymath/sqrt.go
Crie um novo arquivo chamado `sqrt.go` e ponha o seguinte conteúdo:
// Código fonte de $GOPATH/src/mymath/sqrt.go
package mymath
func Sqrt(x float64) float64 {
@@ -44,35 +42,34 @@ Create a new file called `sqrt.go`, type following content to your file.
return z
}
Now my package directory has been created and its code has been written. I recommend that you use the same name for your packages as their corresponding directories, and that the directories contain all of the package source files.
Agora o diretório e código fonte do meu pacote foi criado. Recomendo que utilize o nome do pacote correspondendo ao diretório.
## Compile packages
## Compilando pacotes
We've already created our package above, but how do we compile it for practical purposes? There are two ways to do this.
Agora que nós criamos nosso pacote acima, como vamos utilizado de modo prático? Existem duas maneiras de fazer isso.
1. Switch your work path to the directory of your package, then execute the `go install` command.
2. Execute the above command except with a file name, like `go install mymath`.
After compiling, we can open the following folder.
1. Mude para o diretório do seu pacote e execute o comando `go install`.
2. Execute o comando acima, utilizando o nome do arquivo sem extenção, exemplo: `go install mymath`.
Após compilado, podemos ve-lo na seguinte pasta:
cd $GOPATH/pkg/${GOOS}_${GOARCH}
// you can see the file was generated
// O arquivo do pacote gerado com a extenção .a
mymath.a
The file whose suffix is `.a` is the binary file of our package. How do we use it?
Nosso arquivo foi gerado com a extenção `.a`. Isso é o arquivo binário, como vamos utiliza-lo?
Obviously, we need to create a new application to use it.
Obviamente teremos que criar uma nova aplicação para utilizar.
Create a new application package called `mathapp`.
Crie uma nova aplicação chamada `mathapp`
cd $GOPATH/src
mkdir mathapp
cd mathapp
vim main.go
code
Código fonte:
//$GOPATH/src/mathapp/main.go source code.
//$GOPATH/src/mathapp/main.go código fonte.
package main
import (
@@ -81,25 +78,25 @@ code
)
func main() {
fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))
fmt.Printf("Olá, mundo. Sqrt(2) = %v\n", mymath.Sqrt(2))
}
To compile this application, you need to switch to the application directory, which in this case is `$GOPATH/src/mathapp`, then execute the `go install` command. Now you should see an executable file called `mathapp` was generated in the directory `$GOPATH/bin/`. To run this program, use the `./mathapp` command. You should see the following content in your terminal.
Para compilar nossa aplicação, deveremos alterar o código fonte de diretório, nesse caso para `$GOPATH/src/mathapp` e executar o comando `go install`. Agora teremos um arquivo executável dentro da pasta `$GOPATH/bin/`. Para executarmos basta: `./mathapp` no terminal, e você deverá ver o seguinte retorno:
Hello world. Sqrt(2) = 1.414213562373095
Olá, mundo. Sqrt(2) = 1.414213562373095
## Install remote packages
## Instalando pacotes remotamente
Go has a tool for installing remote packages, which is a command called `go get`. It supports most open source communities, including Github, Google Code, BitBucket, and Launchpad.
Go tem uma ferramente para utilizar pacotes remotos, chamada `go get`. Ela é suportada por grandes comunidades código aberto, incluindo: Github, Google Code, Bitbucket e Launchpad.
go get github.com/astaxie/beedb
You can use `go get -u …` to update your remote packages and it will automatically install all the dependent packages as well.
Você pode utilizar o parâmetro `-u` para a atualizar os pacotes já existentes, por exemplo: `go get -u …`.
This tool will use different version control tools for different open source platforms. For example, `git` for Github and `hg` for Google Code. Therefore, you have to install these version control tools before you use `go get`.
After executing the above commands, the directory structure should look like following.
O `go get` utiliza as ferramentas de versionamento código berto mais utilizadas do mercado como `git` para o GitHub e o `hg` para o Google Code.
Antes de utilizar o `go get` certifique-se de ter instado ao menos uma delas. (Nota do tradutor: Recomendo utilizar Git)
Após a execução do comando acima, você deverá ter a seguinte estrutura de diretórios:
$GOPATH
src
|-github.com
@@ -111,20 +108,20 @@ After executing the above commands, the directory structure should look like fol
|-astaxie
|-beedb.a
Actually, `go get` clones source code to the $GOPATH/src of the local file system, then executes `go install`.
O comando `go get` clona o código fonte e dependencias para o seu $GOPATH/src e instala os pacote com `go install`
You can use remote packages in the same way that we use local packages.
Você também pode utilizar pacotes de terceiros através de imports no código fonte da aplicação:
import "github.com/astaxie/beedb"
## Directory complete structure
## Estrutura de diretórios completa
If you've followed all of the above steps, your directory structure should now look like the following.
Se você seguiu todos os passos anteriores corretamente, sua estrurura de diretórios deverá ser algo semelhando a isso:
bin/
mathapp
pkg/
${GOOS}_${GOARCH}, such as darwin_amd64, linux_amd64
${GOOS}_${GOARCH}, A arquitetura do seu sistema: darwin_amd64, linux_amd64
mymath.a
github.com/
astaxie/
@@ -141,11 +138,12 @@ If you've followed all of the above steps, your directory structure should now l
util.go
Now you are able to see the directory structure clearly; `bin` contains executable files, `pkg` contains compiled files and `src` contains package source files.
Agora que exclarevemos como Go gerencia dependencias e código fonte, vamos recaptular de forma rápida a estrutura; `bin` contém os executaveis, `pkg` bibliotecas ou pacotes compilados, `src` código fonte da sua aplicação e pacotes.
(The format of environment variables in Windows is `%GOPATH%`, however this book mainly follows the Unix-style, so Windows users need to replace these yourself.)
(O GOPATH no Windows é exibido como: `%GOPATH%`, como esse livro tem um foco em sistemas UNIX-Like, usuários Windows deverão realizar futuros ajustes para que tudo ocorra como esperado)
## Links
- [Directory](preface.md)
- Previous section: [Installation](01.1.md)
- Next section: [Go commands](01.3.md)
- [Sumário](preface.md)
- Sessão anterior: [Instalação](01.1.md)
- Próxima sessão: [Comandos em Go](01.3.md)