Skip to content

Latest commit

 

History

History
151 lines (101 loc) · 6.27 KB

File metadata and controls

151 lines (101 loc) · 6.27 KB

#1.2 $GOPATH y nuestro entorno de trabajo

$GOPATH

Todos los comando en Go confían en una importante variable de entorno llamada $GOPATH. Note que esta no es la variable $GOROOT que es donde Go es instalado. Esta variable indica cual es el área de trabajo de Go en nuestra computadora. (Yo utilizo este path en mi computadora, si usted no tiene la misma estructura de directorio, por favor sustitúyala por la de usted.)

En sistemas Unix-like, la variable debería ser utilizada de forma similar a esta.

export GOPATH=/home/apple/mygo

En Windows, es necesario crear una nueva variable de entorno llamada GOPATH, entonces podemos configurar un valor como c:\mygo( Este valor va a depender donde queremos localizar nuestro espacio de trabajo )

Se puede tener mas de una ruta (espacio de trabajo) en $GOPATH, pero recuerde que necesita utilizar :(; en Windows) para romper con ellas. En este punto, go get va a salvar el contenido en su primera ruta en el $GOPATH.

En $GOPATH, usted debería tener tres carpetas, de la siguiente manera.

  • src para el código fuente con la extensiones .go, .c, .g, .s.
  • pkg para los archivos compilados de extensión .a.
  • bin para los archivos ejecutables

En este libro, utilizo mygo como mi única ruta en el $GOPATH.

Carpeta para los paquetes

Crear un paquete con archivos de código fuente y capetas como $GOPATH/src/mymath/sqrt.go (mymath es el nombre del paquete) ( El autor usa mymath como su nombre de paquete, y el mismo nombre para la carpeta que contiene los archivos del paquete)

Cada vez que usted cree un paquete, debería crear una nueva carpeta en el directorio src, las carpetas son nombradas normalmente de la misma forma que lo hacemos con el paquete que vamos a utilizar. Usted puede tener varios niveles de directorios si lo queremos. Por ejemplo, creamos los directorios $GOPATH/src/github.com/astaxie/beedb, entonces la ruta del paquete es github.com/astaxie/beedb. El nombre del paquete va a ser el ultimo directorio de la ruta del mismo, que en este caso es beedb.

Ejecute los siguientes comandos. ( Ahora el autor vuelve a hablarnos sobre algunos ejemplos )

cd $GOPATH/src
mkdir mymath

Creamos un nuevo archivo llamado sqrt.go, y dentro colocamos el siguiente contenido.

// 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 mi directorio del paquete es creado y el código funcional esta hecho. Yo recomiendo que mantengan el mismo nombre para el paquete y la carpeta que contiene los archivos fuentes del mismo.

Paquete compilados

Ya hemos creado nuestro paquete como lo escribimos arriba, pero, como compilamos esto de forma práctica? Hay dos maneras para hacer esto.

  1. Diríjase hacia la ruta donde se encuentra su paquete y ejecute el comando go install.
  2. Ejecutar el comando anterior con el nombre del paquete, por ejemplo: go install mymath.

Después de compilar, nosotros podemos abrir la siguiente carpeta.

cd $GOPATH/pkg/${GOOS}_${GOARCH}
// Se puede ver que se generó el archivo
mymath.a

El archivo con extensión que se generó .a es un archivo binario de su paquete, y como podemos usarlo?

Obviamente, nosotros necesitamos crear una nueva aplicación que lo use.

Creamos una nueva aplicación llamada mathapp.

cd $GOPATH/src
mkdir mathapp
cd mathapp
vim main.go

codigo

//$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, debemos cambiar al directorio donde se encuentra la aplicación que es en este caso $GOPATH/src/mathapp, entonces ejecutamos el comando go install. Ahora deberíamos ver un archivo ejecutable llamado mathapp que fue generado en el directorio $GOPATH/bin/. Para ejecutar el programa, debemos usar el comando ./mathapp, entonces deberíamos ver los siguiente en la terminal.

Hello world. Sqrt(2) = 1.414213562373095

Instalar paquetes remotos

Go tiene una herramienta para instalar paquetes remotos, que es el comando llamado go get. Este tiene soporte para la mayoría de las comunidades de software libre, incluidas Github, Google Code, BitBucket, and Launchpad.

go get github.com/astaxie/beedb

Usted puede utilizar el comando go get -u … para actualizar estos paquetes remotos, y esto va a instalar automáticamente todos los paquetes de los que depende también.

Esta herramienta utiliza diferentes herramientas de control de versiones para las diferentes plataforma “Open Source”. Por ejemplo, git para Github, hg para Google Code. Por lo tanto, uno debe instalar estas herramientas para el manejo de control de versiones para poder utilizar la herramienta go get.

Despues de ejecutar los anteriores comandos, la estructura de directorios debería ser similar a la siguiente.

$GOPATH
	src
	 |-github.com
	 	 |-astaxie
	 	 	 |-beedb
	pkg
	 |--${GOOS}_${GOARCH}
	 	 |-github.com
	 	 	 |-astaxie
	 	 	 	 |-beedb.a

Lo que realmente realizar go get, es clonar el código fuente hacia el directorio $GOPATH/src y en sistema de archivos local, y luego ejecuta el comando go install.

Utilizaremos los paquetes remotos de la misma manera que usamos los paquetes que creamos localmente.

import "github.com/astaxie/beedb"

Estructura de directorio completa

Si siguió todos los pasos, su estructura de directorio debería verse como la siguiente.

bin/
	mathapp
pkg/
	${GOOS}_${GOARCH}, such as 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 puede ver claramente la estructura de directorios , bin va a contener los archivos ejecutables, pkg va a contener archivos compilados, y src va a contener los archivos de código fuente.

(El formato de las variables de entorno en Windows es %GOPATH%, este libro utiliza principalmente el estilo usado por sistemas Unix-like, por eso los usuarios Windows necesitaran reemplazarlo por su cuenta.)

Enlaces