Capítulo 1. Primeros pasos

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Go es un lenguaje de programación de propósito general con características avanzadas y una sintaxis limpia. Gracias a su amplia disponibilidad en diversas plataformas, su robusta biblioteca común bien documentada y su enfoque en los buenos principios de ingeniería de software, Go es un lenguaje de programación estupendo para aprender.

Este libro no presupone ningún conocimiento previo de Go, y pretende servir de introducción sencilla al lenguaje. Todas las características básicas del lenguaje se tratarán en capítulos breves y concisos que deberían prepararte para escribir programas Go reales y abordar algunos de los recursos más avanzados disponibles sobre el lenguaje (documentación en línea, libros, charlas, etc.).

Aunque este libro es adecuado para programadores inexpertos, si nunca has programado antes probablemente encontrarás el material demasiado difícil de seguir. Puede que te convenga consultar un recurso de programación más general antes de sumergirte en el material que aquí se ofrece, pero, sinceramente, la mayoría de los estudiantes necesitan el tipo de apoyo práctico y personal que podrías encontrar en un aula o uno a uno con un programador experimentado.

Configuración de la máquina

Este libro contiene muchos ejemplos de código y ejercicios. Para obtener los mejores resultados, debes intentar ejecutar estos ejemplos en tu propio ordenador a medida que avanzas en cada capítulo.

Pero antes de que puedas escribir tu primer programa Go, hay algunas cosas que tendrás que configurar.

Editores de texto

Go es un lenguaje muy legible y sucinto, por lo que cualquier editor de texto servirá para editar archivos. Hay complementos que añaden algunas funciones útiles (como autocompletar y formatear al guardar) para muchos editores populares, pero esos complementos no son necesarios para aprender el lenguaje. Si no estás seguro de qué utilizar, te recomiendo que uses Atom de GitHub: es gratuito, multiplataforma y fácil de instalar desde el sitio web de Atom.

La Terminal

Go es un lenguaje compilado y, como muchos otros lenguajes, hace un uso intensivo de la línea de comandos. Si vienes de un lenguaje que hace la mayoría de las cosas a través de un IDE (como Java o C#), esto puede intimidarte un poco, pero por suerte, las herramientas de Go son bastante fáciles de usar. A modo de recordatorio, he aquí cómo puedes acceder a un terminal:

Windows
En Windows, puedes acceder al terminal (también conocido como símbolo del sistema) pulsando la tecla Windows + R (mantén pulsada la tecla Windows y pulsa R), escribiendo cmd.exe y pulsando Intro.
OS X
En OS X, puedes acceder al terminal navegando hasta Finder → Aplicaciones → Utilidades → Terminal.

Medio ambiente

Las variables de entorno son un mecanismo que proporciona tu sistema operativo para alterar el comportamiento de un programa sin tener que cambiarlo. Un entorno es una colección de estas variables, cada una de las cuales tiene un nombre y un valor correspondiente. Por ejemplo, existe una variable de entorno TEMP que almacena la ubicación de un directorio de tu ordenador donde se guardan los archivos temporales.

El conjunto de herramientas Go utiliza una variable de entorno llamada GOPATH para encontrar el código fuente Go. Aunque puedes establecer GOPATH en el valor que desees, para facilitar las cosas lo haremos coincidir con tu directorio personal:

Windows

En Windows, la información del usuario suele almacenarse en C: \Usuarios\<USUARIO> , donde <USUARIO> se sustituiría por tu nombre de usuario (por ejemplo, C:\Usuarios\alice). Windows incluye una variable de entorno predefinida llamada USERPROFILE, que puedes utilizar para establecer tu GOPATH.

Abre una nueva ventana de terminal e introduce lo siguiente:

setx GOPATH %USERPROFILE%

Si utilizas una versión de Windows anterior a Vista, es posible que este comando no funcione, por lo que también puedes establecer variables de entorno accediendo a Panel de control → Sistema → Avanzado → Variables de entorno.

OS X

En OS X, la información del usuario suele almacenarse en /Usuarios/<USUARIO>, donde <USUARIO> se sustituiría por tu nombre de usuario (por ejemplo, /Users/alice). En OS X, configuraremos GOPATH utilizando un archivo de inicialización especial para el terminal llamado .bash_profile.

Abre un terminal e introduce lo siguiente

echo 'export GOPATH=$HOME\n' >> ~/.bash_profile

Cierra el terminal, vuelve a abrirlo e introduce lo siguiente:

env

Entre otras muchas variables de entorno, deberías ver una entrada para GOPATH.

Ve a

Go es tanto el nombre del lenguaje de programación como el nombre del conjunto de herramientas utilizadas para construir programas Go e interactuar con ellos. Antes de empezar a trabajar con Go, tendrás que instalar el conjunto de herramientas Go.

Descarga y ejecuta el instalador para tu plataforma desde golang.org/dl.

Para confirmar que todo funciona, abre un terminal y escribe lo siguiente:

go version

Deberías ver lo siguiente (tu número de versión y tu sistema operativo pueden ser ligeramente diferentes):

go version go1.5 windows/amd64

Si aparece un error que indica que no se reconoce el comando, intenta reiniciar el ordenador.

El conjunto de herramientas Go se compone de varios comandos y subcomandos diferentes. Puedes obtener una lista de esos comandos escribiendo:

go help

Con Go instalado y funcionando, ya tienes todo lo que necesitas para escribir tu primer programa Go.

Tu primer programa

Tradicionalmente, el primer programa que escribes en cualquier lenguaje de programación se llama programa "Hola, mundo", un programa que simplemente muestra Hello, World en tu terminal. Vamos a escribir uno utilizando Go.

En primer lugar, crea una nueva carpeta donde puedas guardar nuestro programa "Hola, Mundo". Crea una carpeta llamada ~/src/golang-book/chapter1. Desde el terminal, puedes hacerlo introduciendo los siguientes comandos:

En Windows
md src\golang-book\chapter1
En OS X
mkdir -p src/golang-book/chapter1

Abre tu editor de texto, crea un nuevo archivo e introduce lo siguiente:

package main

import "fmt"

// this is a comment

func main() {
    fmt.Println("Hello, World")
}

Asegúrate de que tu archivo es idéntico al que se muestra aquí y guárdalo como main.go en la carpeta que acabamos de crear. Abre un nuevo terminal y escribe lo siguiente:

cd src/golang-book/chapter1
go run main.go

Deberías ver Hello, World en tu terminal. El comando go run toma los archivos subsiguientes (separados por espacios), los compila en un ejecutable guardado en un directorio temporal y, a continuación, ejecuta el programa. Si no has visto Hello, World, puede que te hayas equivocado al escribir el programa. El compilador Go te dará pistas sobre dónde está el error. Como la mayoría de los compiladores, el compilador Go es extremadamente pedante y no tolera los errores.

Cómo leer un programa Go

Veamos este programa con más detalle:

package main

import "fmt"

// this is a comment

func main() {
    fmt.Println("Hello, World")
}

Los programas Go se leen de arriba abajo, de izquierda a derecha (como un libro). La primera línea dice esto

package main

Esto se conoce como una declaración de paquete, y todo programa Go debe empezar con ella. Los paquetes son la forma que tiene Go de organizar y reutilizar el código. Hay dos tipos de programas Go: los ejecutables y las bibliotecas. Los ejecutables son el tipo de programas que podemos ejecutar directamente desde el terminal (en Windows, terminan en .exe). Las bibliotecas son colecciones de código que empaquetamos juntas para poder utilizarlas en otros programas. Más adelante exploraremos las bibliotecas con más detalle; por ahora, asegúrate de incluir esta línea en cualquier programa que escribas.

La línea siguiente está en blanco. Los ordenadores representan las nuevas líneas con un carácter especial (o varios caracteres). Las nuevas líneas, los espacios y los tabuladores se conocen como espacios en blanco (porque no se ven). A Go no le importan los espacios en blanco: los utilizamos para que los programas sean más fáciles de leer (podrías eliminar esta línea y el programa se comportaría exactamente igual).

En la línea siguiente, vemos esto

import "fmt"

La palabra clave import es la forma de incluir código de otros paquetes para utilizarlo con nuestro programa. El paquete fmt (abreviatura de formato) implementa el formato para la entrada y la salida. Teniendo en cuenta lo que acabamos de aprender sobre los paquetes, ¿qué crees que contendrían al principio los archivos del paquete fmt?1

Observa que fmt está entre comillas dobles. El uso de comillas dobles como éstas se conoce como un literal de cadena, que es un tipo de expresión. En Go, las cadenas representan una secuencia de caracteres (letras, números, símbolos, etc.) de una longitud determinada. Las cadenas se describen con más detalle en el próximo capítulo, pero por ahora lo importante es tener en cuenta que un carácter de apertura " debe ir seguido finalmente por un carácter de cierre " y todo lo que haya entre ambos se incluye en la cadena (el propio carácter " no forma parte de la cadena).

La línea que empieza por // se conoce como un comentario. Los comentarios son ignorados por el compilador Go y están ahí por tu propio bien (o por el de quienquiera que recoja el código fuente de tu programa). Go admite dos estilos diferentes de comentarios: los comentarios //, en los que todo el texto entre // y el final de la línea forma parte del comentario, y los comentarios /* */, en los que todo lo que hay entre los asteriscos forma parte del comentario (y puede incluir varias líneas).

Después de esto, verás una declaración de función:

func main() {
    fmt.Println("Hello, World")
}

Funciones son los bloques de construcción de un programa Go. Tienen entradas, salidas y una serie de pasos llamados sentencias que se ejecutan en orden. Todas las funciones comienzan con la palabra clave func seguida del nombre de la función (main, en este caso), una lista de cero o más parámetros rodeados de paréntesis, un tipo de retorno opcional y un cuerpo que se rodea de llaves. Esta función no tiene parámetros, no devuelve nada y sólo tiene una sentencia. El nombre main es especial porque es la función a la que se llama cuando se ejecuta el programa.

La pieza final de nuestro programa es esta línea:

fmt.Println("Hello, World")

Esta declaración consta de tres componentes. Primero, accedemos a otra función dentro del paquete fmt llamada Println (esa es la pieza fmt.Println ); Println significa "imprimir línea". Luego creamos una nueva cadena que contiene Hello, World y invocamos (también conocido como llamar o ejecutar) esa función con la cadena como primer y único argumento.

A estas alturas, ya habrás visto mucha terminología nueva. A veces es útil leer deliberadamente tu programa en voz alta. Una lectura del programa que acabamos de escribir podría ser así:

Crea un nuevo programa ejecutable que haga referencia a la biblioteca fmt y contenga una función llamada main. Esa función no toma argumentos y no devuelve nada. Accede a la función Println contenida en el paquete fmt y la invoca utilizando un argumento: la cadena Hello, World.

La función Println hace el verdadero trabajo en este programa. Puedes saber más sobre ella escribiendo lo siguiente en tu terminal:

godoc fmt Println

Entre otras cosas, deberías ver la salida que se muestra en la Figura 1-1.

Figura 1-1. Salida de godoc fmt Println

Println formatea utilizando los formatos por defecto para sus operandos y escribe en la salida estándar. Siempre se añaden espacios entre los operandos y una nueva línea. Devuelve el número de bytes escritos y cualquier error de escritura encontrado.

Go es un lenguaje de programación muy bien documentado, pero esta documentación puede ser difícil de entender a menos que ya estés familiarizado con los lenguajes de programación. No obstante, el comando godoc es extremadamente útil y un buen punto de partida siempre que tengas alguna duda.

Volviendo a la función que nos ocupa, esta documentación te está diciendo que la función Println enviará lo que le des a la salida estándar (es decir, la salida del terminal en el que estés trabajando). Esta función es la que hace que se muestre Hello, World.

En el próximo capítulo, exploraremos cómo Go almacena y representa cosas como Hello, World aprendiendo sobre los tipos.

Ejercicios

  1. ¿Qué son los espacios en blanco?
  2. ¿Qué es un comentario? ¿Cuáles son las dos formas de escribir un comentario?
  3. Nuestro programa comenzó con package main. ¿Con qué empezarían los archivos del paquete fmt?
  4. Hemos utilizado la función Println definida en el paquete fmt. Si quisieras utilizar la función Exit del paquete os, ¿qué tendrías que hacer?
  5. Modifica el programa que escribimos para que en lugar de imprimir Hello, World imprima Hello, my name is seguido de tu nombre.

1 Los archivos del paquete fmt empiezan por package fmt.

Get Presentación de Go now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.