#1.3 Comandos con Go
El lenguaje Go viene con un grupo de comandos que nos va a ayudar a manejar un grupo de herramientas que nos van a facilitar varias tareas, usted puede ejecutar la línea de comando go
para verlos:
Figura 1.3 El comando Go nos muestra información detallada
Todos estos son muy útiles para nosotros, vamos a ver como utilizar algunos de ellos.
Este comando es para compilar los tests, el mismo va a compilar los paquetes de los que dependan si es necesario.
- Si el paquete no es el principal o
main
comomymath
de la sección 1.2, no se va a generar nada después de ejecutar el comandogo build
. Si usted necesita empaquetar el archivo.a
en$GOPATH/pkg
, debe usar el comandogo install
. - Si el paquete es el principal o
main
, este va a generar un archivo ejecutable en la misma carpeta. Si usted busca que el archivo sea generado en$GOPATH/bin
, debe usargo install
ogo build -o ${PATH_HERE}/a.exe.
- Si hay muchos archivos en la carpeta, pero solo desea compilar uno de ellos, usted debe agregar el nombre del archivo después del comando
go build
. Por ejemplo,go build a.go
. En cambiogo build
va a compilar todos los archivos en la carpeta. - También podemos especificar con que nombre de archivo queremos que salga una vez compilado. Por ejemplo, tenemos
mathapp
en la sección 1.2, si usamosgo build -o astaxie.exe
este va a generar el archivoastaxie.exe
en vez demathapp.exe
. El nombre por defecto va a ser el nombre de la carpeta (no en el paquete principal) o el nombre del primer archivo de código fuente(en el paquete principal).
(De acuerdo con Las especificaciones del lenguaje Go, el nombre del paquete debe ser el nombre después de la palabra package
en la primera línea del archivo de código fuente, que no necesariamente debe ser el mismo que tiene la carpeta, y el archivo ejecutable va a ser el nombre de la carpeta de forma por defecto.])
-
go build
va a ignorar los archivos que comiencen con_
o.
. -
Si usted desea tener diferentes archivos de código fuente para cada sistema operativo, puede nombrarlos con el nombre del sistema como sub-fijo. Supongamos que tenemos algunos archivos de código fuente para cargar algunos arrays, ellos deberían llamarse de la siguiente manera.
array_linux.go | array_darwin.go | array_windows.go | array_freebsd.go
go build
va a escoger el que este asociado con su sistema operativo. Por ejemplo, solo se va a compilar array_linux.go en un sistema Linux, y se van a ignorar todos los otros.
Este comando es para limpiar los archivos que se generan por los compiladores, incluidos los siguientes archivos.
_obj/ // antiguo directorio de objetos, dejado por Makefiles
_test/ // antiguo directorio de test, dejado por Makefiles
_testmain.go // antiguo directorio de gotest, dejado por Makefiles
test.out // antiguo directorio de test, dejado por Makefiles
build.out // antiguo directorio de test, dejado por Makefiles
*.[568ao] // archivo objeto, dejado por Makefiles
DIR(.exe) // generado por go build
DIR.test(.exe) // generado por go test -c
MAINFILE(.exe) // generado por go build MAINFILE.go
Yo suelo usar este comando para limpiar mis archivos antes de subir mi proyecto a Github, estos son útiles para correr los test localmente, pero inútiles para el control de versiones.
Las personas que trabajaron o trabajan con C/C++ deben conocer que siempre hay personas argumentando sobre como debe ser el estilo de codificación de el código fuente y siempre hablan sobre el estilo de K&R y el estilo ANSI, que uno es mejor que el otro. Sin embargo en Go, hay un solo estilo en el que deberíamos estar forzado a utilizar. Por ejemplo, tienes que poner la llave izquierda al final de la línea, y no puedes ponerlo en una sola línea, ya que obtendrás un error en la compilación! Afortunadamente, no tenes que recordar todas estas reglas, ya que el comando go fmt
hace este trabajo por ti, con solo ejecutar el comando go fmt <Nombre del archivo>.go
en la terminal. Yo no utilizo mucho este comando porque los IDEs normalmente lo utilizan automáticamente cuando guardas el archivo fuente, voy a hablar un poco más sobre IDEs en la siguiente sección.
Nosotros normalmente usamos gofmt -w
en vez de go fmt
, este último no reescribe los archivos fuente después de formatear el código. El comando gofmt -w src
le va a dar formato a todo el proyecto.
Este comando es para obtener paquetes remotos, este soporta BitBucket, Github, Google Code, Launchpad y muchos más. Actualmente suceden dos cosas después de ejecutarlo. La primera es la descarga del código fuente, entonces luego de eso ejecuta go install
. Antes de usar este comando, debe estar seguro de que tiene instaladas las siguientes herramientas.
BitBucket (Mercurial Git)
Github (git)
Google Code (Git, Mercurial, Subversion)
Launchpad (Bazaar)
Para usar este comando, tiene que instalar estas herramientas de forma correcta. No olvide de configurar el PATH
. Por cierto, también es compatible con los nombres de dominio personalizados, utilizando el comando go help remote
(go help get
) vamos a poder ver más detalles de como utilizarla.
Este comando compila todos los paquetes y genera los archivo que luego son movidos hacia $GOPATH/pkg
o $GOPATH/bin
.
Este comando carga todos los archivos cuyo nombre incluya *_test.go
y genera los archivos de test, luego nos muestra información como la siguiente.
ok archive/tar 0.011s
FAIL archive/zip 0.022s
ok compress/gzip 0.033s
...
Esto testea todos los archivos de test de forma predeterminada, utilizando el comando go help testflag
vamos a poder ver más detalles.
Muchas personas dicen que no necesitamos ninguna documentación de terceros para poder programar en Go(De hecho ya eh armado una CHM), Go tiene una poderosa herramienta para manejar la documentación por si mismo.
Entonces, como buscamos información de distintos paquetes en la documentación? Si uno busca obtener más detalles sobre la documentación del paquete builtin
, debemos usar el comando godoc builtin
, y usar el comando godoc net/http
para el paquete http
. Si lo que buscamos es más detalles sobre una función específica, debemos usar el comando godoc fmt Printf
, y godoc -src fmt Printf
para poder ver el código fuente.
Además ejecutando el comando godoc -http=:8080
, y luego abriendo nuestro navegador en la dirección 127.0.0.1:8080
, debería poder ver el sitio golang.org. Esto no solamente nos va a mostrar información de los paquetes estándar, si no que también vamos a poder ver los paquetes de nuestro $GOPATH/pkg
. Por ejemplo esto es genial para personas que sufren por el gran corta-fuegos de China.
Go nos provee más comando de los que acabamos de hablar.
go fix // nos sirve para actualizar nuestro código de versiones anteriores a go1 hacia la nueva posterior a go1
go version // nos da información de nuestra versión de Go
go env // nos muestra las variables de entorno de Go
go list // nos lista todos los paquetes instalados
go run // compila archivos temporales y ejecuta la aplicación
También podemos encontrar más información de los comandos ejecutando lo siguiente go help <comando>
.
- Indice
- Sección anterior: $GOPATH y espacio de trabajo
- Siguiente sección: Herramientas de desarrollo para Go