From 4b4eb1bfb1512d4a55eddf21372c0c49df6bc96a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Ney=20Guerrero?= Date: Sat, 27 Dec 2014 02:22:00 -0600 Subject: [PATCH] added 01.2 --- es/01.1.md | 4 +- es/01.2.md | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 153 insertions(+), 2 deletions(-) create mode 100644 es/01.2.md diff --git a/es/01.1.md b/es/01.1.md index 82b1ea39..0e7ebe23 100644 --- a/es/01.1.md +++ b/es/01.1.md @@ -119,5 +119,5 @@ Homebrew es una herramienta para manejar software comúnmente usada en la Mac. S ## Links - [Directorio](preface.md) -- Sección anterior: [Go environment configuration](01.0.md) -- Sección siguiente: [$GOPATH and workspace](01.2.md) +- Sección anterior: [Configurando el entorno de Go](01.0.md) +- Sección siguiente: [$GOPATH y el ambiente de trabajo](01.2.md) diff --git a/es/01.2.md b/es/01.2.md new file mode 100644 index 00000000..a3995d36 --- /dev/null +++ b/es/01.2.md @@ -0,0 +1,151 @@ +#1.2 $GOPATH y el ambiente de trabajo + +## $GOPATH + +Todos los comandos de Go dependen de una importante variable de entorno llamada $GOPATH. Favor notar que esta no es la variable $GOROOT que es la que muestra dónde Go está instalado. Esta variable apunta al ambiente de trabajo de Go en tu computadora (You uso esta ruta en mi computadora; si no tienes la misma estructura de directorios, por favor reemplaza por la que tengas). + +En sistemas tipo Unix, la variable debe usar así: + + export GOPATH=/home/apple/mygo + +En Windows, necesitas crear una nueva variable de entorno llamada GOPATH, luego estable su valor a `c:\mygo` (Este valor depende dónde tu ambiente de trabajo esté ubicado) + +Está bien tener más de una ruta de ambiente de trabajo en $GOPATH, pero recuerda que debes usar `:`(`;` en Windows) para separarlos. En este punto, `go get` guardará el contenido de tu primera ruta en $GOPATH. + +En $GOPATH, debes tener los siguientes tres directorios: + +- `src` para archivos fuentes cuyo sufijo es .go, .c, .g, .s. +- `pkg` para archivos compilados cuyo sufijo es .a. +- `bin` para archivos ejecutables + +En este libro, utilizo `mygo` cómo mi única ruta en $GOPATH. + +## Directorio de paquetes + +Crea archivos de código fuente de paquetes de la siguiente forma `$GOPATH/src/mymath/sqrt.go` (`mymath` es el nombre del paquete) ( ***El autor utiliza `mymath` cómo su nombre de paquete, el mismo nombre para el directorio que contiene los archivos de código fuente del paquete) + +Cada vez que creas un paquete, deberías crear un nuevo folder en el directorio `src`. Los nombres de los directorios usualmente son los mismos que el paquete que vas a utilizar. Puedes tener directorios de múltiples niveles si lo deseas. Por ejemplo, si creas el directorio `$GOPATH/src/github.com/astaxie/beedb`, entonces la ruta del paquete sería `github.com/astaxie/beedb`. El nombre del paquete será el último directorio en tu ruta, que es `beedb` en este caso. + +Ejecuta los siguientes comandos. (Ahora el autor mostrará unos ejemplos) + + cd $GOPATH/src + mkdir mymath + +Crea un nuevo archivo llamado `sqrt.go`, escribe el siguiente contenido en el archivo. + + // Código fuente de $GOPATH/src/mymath/sqrt.go + package mymath + + func Sqrt(x float64) float64 { + z := 0.0 + for i := 0; i < 1000; i++ { + z -= (z*z - x) / (2 * x) + } + return z + } + +Ahora el directorio de mi paquete ha sido creado y su código ha sido escrito. Recomiendo que uses el mismo nombre para tus paquetes y sus directorios correspondientes y que los directorios contenga todo el código fuente del paquete. + +## Compilar paquetes + +Ya hemos creado nuestra paquete, pero cómo lo compilamos para propósitos prácticos? hay dos formas de hacer esto. + +1. Cambia tu ruta de trabajo al directorio de tu paquete, luego ejecuta el comando `go install`. +2. Ejecuta el comando de arriba, con la diferencia de que suministras el nombre del archivo como parámetro `go install mymath`. + +Después de compilar podemos abrir el siguiente directorio. + + cd $GOPATH/pkg/${GOOS}_${GOARCH} + // puedes ver que el archivo fue generado + mymath.a + +Este archivo cuyo sufijo es `.a`, es el archivo binario de nuestro paquete. Cómo lo usamos? + +Obviamente, necesitamos crear una nueva aplicación para utilizarlo. + +Crea una nueva aplicación llamada `mathapp`. + + cd $GOPATH/src + mkdir mathapp + cd mathapp + vim main.go + +código + + //$GOPATH/src/mathapp/main.go código fuente + package main + + import ( + "mymath" + "fmt" + ) + + func main() { + fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2)) + } + +Para compilar esta aplicación necesitas cambiar al directorio de la aplicación que en este caso es `$GOPATH/src/mathapp`, luego ejecuta el comando `go install`. Ahora deberías ver un archivo ejecutable llamado `mathapp` que se ha generado en el directorio `$GOPATH/bin/`. Para correr este programa usa el comando `./mathapp`. Deberías de ver el siguiente contenido en tu terminal: + + Hello world. Sqrt(2) = 1.414213562373095 + +## Instala paquete remotos + +Go tiene una herramienta para instalar paquetes remotos, es el comando llamado `go get`. Soporta la mayoría de comunidades de código libre, incluyendo Github, Google Code, BitBucket y Launchpad. + + go get github.com/astaxie/beedb + +Puedes usar `go get -u …` para actualizar tus paquetes remotos e incluso instalará todas sus dependencias. + +Esta herramienta usará diferente herramientas de control de versiones para las diferentes plataformas de código libre. Por ejemplo, `git` para Github y `hg` para Google Code. Debido a esto, debes instalar estas herramientas de control de versiones antes de usar `go get`. + +Después de ejecutar los comandos anteriormente descritos, la estructura de directorios debería verse de la siguiente forma: + + $GOPATH + src + |-github.com + |-astaxie + |-beedb + pkg + |--${GOOS}_${GOARCH} + |-github.com + |-astaxie + |-beedb.a + +Actualmente, `go get` clona el código fuente a la ruta $GOPATH/src, luego ejecuta `go install`. + +Puedes usar paquetes remotos de la misma forma que usas paquetes locales. + + import "github.com/astaxie/beedb" + +## Estructura completa del directorio + +Si has seguido todos los pasos anteriores, la estructura de tu directorio se debería ver de la siguiente forma. + + bin/ + mathapp + pkg/ + ${GOOS}_${GOARCH}, como darwin_amd64, linux_amd64 + mymath.a + github.com/ + astaxie/ + beedb.a + src/ + mathapp + main.go + mymath/ + sqrt.go + github.com/ + astaxie/ + beedb/ + beedb.go + util.go + +Ahora puedes ver la estructura de directorios claramente; `bin` contiene los archivos ejecutables, `pkg` contiene los archivos compliados y `src` los archivos de código fuente del paquete. + +(El formato de las variables de entorno en Windows es `%GOPATH%`, sin embargo este libro sigue principalmente el estilo Unix, así que si eres un usuario Windows debes reemplazarlo apropiadamente) + +## Links + +- [Directorio](preface.md) +- Sección anterior: [Instalación](01.1.md) +- Sección siguiente: [Comandos Go](01.3.md)