
Gordon, la mascota de Go
Los pasos necesarios que hay que realizar para poder programar, compilar y enlazar código en Go sobre Mac OS X son los siguientes (que no son más que una explicación algo más extendida y específica para Mac de la página de información en golang, distribuida mediante una licencia cc-by-3.0). Si buscáis un manual sobre cómo hacer lo mismo pero sobre Ubuntu, os recomiendo este de MundoGeek.
Necesitamos incluir nuevas variables de entorno, que serán utilizadas por varios componentes posteriores. Para esto editamos nuestro archivo .bashrc, que está en nuestro directorio personal o home, y añadimos al final las siguientes líneas:
export GOROOT=$HOME/go
export GOOS=darwin
export GOARCH=amd64
export GOBIN=$HOME/bin
export PATH=$PATH:$GOBIN
Obviamente, debemos acordarnos de crear estos dos directorios dentro de nuestra home: go y bin.
GOOS especifica que estamos utilizando un Mac, y GOARCH que utilizaremos la arquitectura de 64 bits. Si tenemos un equipo de 32 bits utilizaremos GOARCH=386. Una vez editado este archivo comprobaremos que el funcionamiento es el correcto desde una nueva terminal, con el comando:
$ env | grep GO
Una vez establecidas las variables de entorno nos descargaremos el resto de herramientas del repositorio de Go, para lo que tendremos que utilizar la herramienta Mercurial para Mac.

Desde la misma portada de la web de mercurial podremos descargarnos directamente la última versión de la aplicación (1.3.1 en el momento de escribir estas líneas), que será un paquete mpkg que debemos instalar. Una vez terminado este proceso ya dispondremos de todos los comandos necesarios desde la terminal, como el gestor de código distribuido hg (podéis probar a ejecutar hg sin ningún parámetro desde la terminal y podréis ver cómo ya está funcionando).
Tras esto nos descargaremos todo el código relacionado con el proyecto Go, utilizando el siguiente comando:
$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
El proceso será como sigue, y se realizará en apenas un par de minutos:
$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
requesting all changes
adding changesets
adding manifests
adding file changes
added 3976 changesets with 16799 changes to 2931 files
updating working directory
1640 files updated, 0 files merged, 0 files removed, 0 files unresolved
$
Tras habernos descargado todo el código necesario, podemos generar las herramientas finales que utilizaremos. Para esto es necesario disponer en nuestra máquina de gcc, bison, libc6-dev y el editor ed. Todas estas herramientas estarán ya instaladas en el sistema si tenéis instalado el IDE XCode, algo que, por otra parte, recomiendo.
Supongo que si os estáis dedicando a desarrollo de software sobre un Mac ya lo tendréis instalado, si no, aquí está disponible. Sólo necesitáis estar dados de alta como desarrolladores en developer.apple.com para poder realizar cualquier descarga.
Comenzamos la generación de las herramientas con:
$ cd $GOROOT/src
$ ./all.bash
Lo que podrá llevar un rato de intenso floodeo de información en la terminal, mientras se realizan todas las compilaciones, pruebas unitarias, etc., etc. Al terminar, tal y como especifica el manual de instalación de Go, el proceso mostrará algo similar a:
[...]
--- cd ../test
N known bugs; 0 unexpected bugs
Donde N es un número que varía dependiendo de la versión que hayamos descargado. En mi caso particular, utilizando Snow Leopard y las especificaciones que os he mostrado (darwin, amd64), no se encuentra ningún fallo.
[...]
--- cd ../test
0 known bugs; 0 unexpected bugs
Por último, ahora que ya se han generado todas las herramientas necesarias, utilizaremos el clásico ejemplo del Hola Mundo para comprobar que todo funciona como debe. Cremos el archivo hello.go (si nuestras variables de entorno son correctas, podemos hacer esto en cualquier lugar, por ejemplo en una carpeta en el escritorio), con el siguiente contenido:
package main
import "fmt"
func main()
{
fmt.Printf("hello, world\n")
}
Lo compilamos con el comando 6g. Este es el compilador que hemos generado para amd64, si estuvieramos utilizando 386 el comando sería 8g. Esta será además la nomenclatura utilizada para todos los comandos y extensiones de archivo resultantes, utilizando siempre un 6 para amd64, un 8 para 386 y un 5 para arquitecturas arm.
6g hello.go
Se ha generado con esto el archivo hello.6, que enlazamos con el comando 6l:
6l hello.6
Y por último se habrá creado un archivo ejecutable de nombre 6.out, que podemos lanzar como cualquier otro ejecutable Unix:
$ ./6.out
hello, world
$
Y con esto y un bizcocho ya podemos empezar a programar en Go, echándole un vistazo a toda la información que se puede encontrar en su página web, golang.org.