<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mundo Geek &#187; go</title>
	<atom:link href="http://mundogeek.net/etiqueta/go/feed/" rel="self" type="application/rss+xml" />
	<link>http://mundogeek.net</link>
	<description>Mundo geek, bitácora sobre todo lo geek: software, gadgets, tecnología, internet, ...</description>
	<lastBuildDate>Fri, 25 May 2012 14:51:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Programar con Go en Ubuntu</title>
		<link>http://mundogeek.net/archivos/2009/11/11/programar-con-go-en-ubuntu/</link>
		<comments>http://mundogeek.net/archivos/2009/11/11/programar-con-go-en-ubuntu/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 18:30:41 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=4340</guid>
		<description><![CDATA[Go es el nuevo lenguaje de programación de Google, un lenguaje que intenta combinar la rapidez de desarrollo de Python con el rendimiento de C y que además es open source, distribuido bajo una licencia tipo BSD. ¿Suena bien? Pues vamos a compilar sus herramientas para poder jugar un poco con él. Primero necesitamos crear [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://golang.org/" title="Lenguaje de programación Go">Go</a> es el nuevo lenguaje de programación de Google, un lenguaje que intenta combinar la rapidez de desarrollo de <a href="http://mundogeek.net/tutorial-python/" title="Tutorial de Python">Python</a> con el rendimiento de C y que además es open source, distribuido bajo una licencia tipo BSD. ¿Suena bien? Pues vamos a compilar sus herramientas para poder jugar un poco con él.</p>
<p>Primero necesitamos crear algunas variables de entorno en nuestro .bashrc. Abrimos el archivo con gedit, por ejemplo</p>
<p class="code">gedit ~/.bashrc</p>
<p><span id="more-4340"></span><br />
y añadimos las siguientes líneas, modificadas según nuestras necesidades y preferencias:</p>
<blockquote><p>export GOROOT=$HOME/go<br />
export GOOS=linux<br />
export GOARCH=386<br />
export GOBIN=$HOME/bin<br />
export PATH=$PATH:$GOBIN</p></blockquote>
<p><code>GOROOT</code>, la primera variable de entorno, indica dónde se guardará el código fuente de Go. <code>GOOS</code> es el sistema operativo para el que vamos a crear nuestras aplicaciones, las opciones son <code>linux</code>, <code>darwin</code> (Mac OS X) y <code>nacl</code> (Native Client, para el navegador Google Chrome). Las opciones para <code>GOARCH</code>, la arquitectura para la que compilamos, son <code>amd64</code> (64 bits), <code>386</code> (32 bits) y <code>arm</code>. Por último, la variable de entorno <code>GOBIN</code> especifica dónde instalaremos los binarios de Go. También modificamos la variable de entorno <code>PATH</code>, añadiendo el directorio en el que se instalarán las herramientas de Go, de forma que podamos ejecutarlas escribiendo su nombre, sin especificar la ruta completa. </p>
<p>Una vez modificado .bashrc, aplicamos los cambios, para no tener que reiniciar la consola</p>
<p class="code">source ~/.bashrc</p>
<p>Pasamos a descargar el código fuente. Para ello primero necesitaremos instalar el cliente del sistema de control de versiones que utilizan, Mercurial</p>
<p class="code">sudo aptitude install mercurial</p>
<p>Una vez hecho esto podemos descargar el código fuente utilizando el comando</p>
<p class="code">hg clone -r release https://go.googlecode.com/hg/ $GOROOT</p>
<p>Una vez tenemos el código fuente, el siguiente paso es compilarlo. Para ello necesitaremos instalar varias herramientas</p>
<p class="code">sudo aptitude install bison gcc libc6-dev ed</p>
<p>Una vez hecho esto, pasamos a compilar</p>
<p class="code">mkdir $GOBIN<br />
cd $GOROOT/src<br />
./all.bash</p>
<p>Cuando el proceso termine, si no se ha producido ningún error, encontraremos las herramientas necesarias para compilar nuestras aplicaciones escritas en Go en el directorio que indicamos para la variable de entorno <code>GOBIN</code>.</p>
<p>A modo de prueba utilizaremos el típico &#8220;Hola Mundo&#8221;. Creamos un nuevo archivo hola.go con gedit, y escribimos el siguiente código</p>
<pre name="code" class="c-sharp">package main

import "fmt"

func main() {
    fmt.Printf("Hola mundo\n");
}</pre>
<p>Guardamos el archivo y lo compilamos</p>
<p class="code">8g hola.go</p>
<p>Si queremos compilar para 64 bits, usaremos el compilador <code>6g</code></p>
<p class="code">6g hola.go</p>
<p>El resultado será un archivo objeto hola.6 u hola.8, con el código máquina de nuestra aplicación. Para crear un ejecutable necesitaremos un último paso, que consiste en enlazar la aplicación, mediante el comando <code>8l</code> (<code>6l</code> para 64 bits)</p>
<p class="code">8l hola.8</p>
<p>Para ejecutar nuestra aplicación, por último:</p>
<p class="code">./8.out</p>
<link type="text/css" rel="stylesheet" href="http://mundogeek.net/sh/css/SyntaxHighlighter.css"></link>
<script language="javascript" src="http://mundogeek.net/sh/js/shCore.js"></script><br />
<script language="javascript" src="http://mundogeek.net/sh/js/shBrushCSharp.js"></script><br />
<script language="javascript">dp.SyntaxHighlighter.ClipboardSwf = 'http://mundogeek.net/sh/flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');</script></p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2009/11/11/programar-con-go-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>48</slash:comments>
		</item>
	</channel>
</rss>

