Escribir el Hola Mundo

En este vídeo escribiremos el Hola Mundo. Se trata del primer programa que se suele escribir al aprender un lenguaje. Lo haremos para así poder asegurar que el compilador está bien instalado, y para empezar a ver las bases de Go: paquete, función, llamada... las iremos ampliando en este módulo.

Como suele ser, empezaremos a programar en Go escribiendo el típico programa de hola mundo. Más allá de que sea un programa para perder el miedo a la programación, es una buena forma de comprobar que Go está correctamente instalado. Si no somos capaces de compilar y ejecutar un programa simple que sólo diga Hola mundo, entonces posiblemente tendremos problemas para intentar compilar cualquier cosa más importante.

Para poder programar en Go, todo lo que necesitamos es un editor de textos y el compilador que acabamos de instalar en las lecciones anteriores. No es mi trabajo decirte qué editor de textos debes utilizar. Puedes utilizar Visual Studio Code si es plato de tu gusto o ya lo conoces de programar en otros lenguajes, o puedes utilizar GoLand si te gustan los productos que fabrica JetBrains. También se pueden utilizar integraciones con Vim, Neovim, Emacs, Helix...

Lo único que sí tenemos que tener en cuenta, es que Go es un lenguaje de programación con muchas opiniones en cuanto a formato y presentación del código fuente. Esto quiere decir que si tienes experiencia programando en otros lenguajes, puede que te sorprenda que Go se empeñe en dejar formateado el código fuente a su manera. Por ejemplo, nada de dejar variables sin usar, o de no indentar correctamente los bloques de código. Esto es importante porque si nuestro editor de textos no se integra bien o también tiene sus propias opiniones, seguramente haya conflictos.

Escribir un Hola Mundo

Vale, pero vamos al lío. Utiliza tu editor de textos favorito para crear un archivo que se llame hello.go, o en general, de cualquier modo pero que termine en .go. Aquí será donde escribamos el primer programa. Te voy a dar en los siguientes párrafos línea a línea lo que debes escribir, con un comentario sobre para qué sirve cada línea, y luego te mostraré el código completo.

Package

Dentro de un programa de código fuente Go, la primera línea debe indicar a qué paquete pertenece el código que estamos escribiendo. Un paquete es el equivalente a carpetas en el mundo de Go. Organizaremos el código alrededor de paquetes, que permiten agrupar los distintos archivos con funciones y variables de Go en módulos reutilizables que podremos importar en otros programas. Este es un concepto que ya desarrollaremos más adelante, por ahora escribe la línea como:

package main

main es un paquete especial que indica que será el paquete principal donde hay una aplicación.

Import

A continuación, pondremos la siguiente línea:

import "fmt"

Con import, lo que hacemos es decirle al compilador que queremos importar funciones y estructuras procedentes de otro paquete. Como ya he mencionado, son reusables, por lo que si organizamos una biblioteca de funciones en un paquete llamado interfaz, luego podremos utilizar la instrucción import para traernos las funciones que hay dentro de ese módulo llamado interfaz.

En este caso, con import "fmt" lo que estaré haciendo es traerme las funciones y estructuras que hay en el paquete fmt. Como ves, el nombre del paquete lo escribimos entre comillas. La razón por la que tenemos que hacerlo así es porque, aunque en este caso el paquete únicamente se llama fmt porque forma parte de la biblioteca estandar, en ocasiones los nombres de paquetes serán más largos y tendrán barras laterales en su nombre (por ejemplo, encoding/json sería un ejemplo). Por lo que se tiene que envolver el nombre del paquete entre comillas para que sea más fácil de distinguir del resto de palabras y símbolos que conforman cualquier archivo de código fuente Go.

Func

Ahora escribiremos la siguiente línea:

func main() { }

En Go, todo el código es organiza alrededor de funciones. Una función es una rutina de código que se comporta como un pequeño programa que hace una cosa. Cuando programemos, dividiremos toda la lógica y los algoritmos del programa en funciones independientes, cada una centrada en una tarea.

En este caso, la función se llama main, y es una función especial que detecta el compilador y que se ejecuta cuando se lanza el ejecutable tras compilarlo. Ya os detallaré más sobre esto cuando hablemos de funciones como tal.

Los otros símbolos que hay al final permiten especificar los argumentos y el cuerpo de la función. De momento están vacíos, pero ya los rellenaremos con cosas. Entre los paréntesis ( ) se escribirán los datos de entrada de la función. Entre las llaves { } se escriben las instrucciones de esa función.

Le ponemos código

Ahora, coloca el cursor entre los caracteres { y } de la línea de la función, y pulsa varias veces la tecla Enter para dejar una línea en blanco. Entre medias, pon lo siguiente:

fmt.Println("Hola mundo")

Esto es una llamada a una función. Ya os dije más arriba que las funciones son unidades de código pequeñas que hacen una tarea. En este caso, es una invocación a la función fmt.Println, que se podría traducir como la función Println del paquete fmt, el cual previamente importé.

Con esto vemos que todo el sistema sobre reutilización de código funciona. Nosotros escribimos funciones en un paquete, que luego podemos importar para invocar. En este caso, Println es una función que forma parte del módulo fmt, y mediante una sentencia de importado, podemos llamarla para que haga su tarea tantas veces como nos haga falta y donde nos interese.

En el futuro os mostraré cómo podéis hacer vuestras propias funciones reusables.

Los paréntesis que vienen después del nombre de la función nos permiten especificar esos datos de entrada que también indicaba antes. Si bien en este caso la función main no tiene argumentos, la función Println sí los tiene y por eso los estoy especificando. En este caso, la función Println recibirá como parámetro una cadena de caracteres llamada "Hola mundo". Ya hablaremos en detalle de esto más adelante.

El programa completo

Estas son todas las líneas que hemos escrito. Como ves, he metido un par de líneas en blanco extra entre cada sección para que sea más fácil de leer luego el código fuente, algo que también es importante a la hora de programar:

package main

import "fmt"

func main() {
    fmt.Println("Hola mundo")
}

Aquí están todas las líneas que hemos puesto antes, pero como ves, además de ponerle un espacio en blanco entre package e import y entre import y func, también he pulsado la tecla Tabulador antes de escribir la llamada a fmt.Println. Con esto, visualmente nos queda más claro que esa llamada a función pertenece a la función main, y es una forma de darle jerarquía al código.

Ejecutar nuestro hola mundo

Ahora que tenemos el ejemplo del hola mundo perfectamente programado, nos aseguramos de guardar los cambios y vamos a proceder a ejecutarlo.

En una consola o línea de comandos, ve a la carpeta en la cual has dejado tu archivo .go, y ejecuta el siguiente comando: go run hello.go. Cuando ponemos go run, lo que hacemos es pedirle a Go que compile y ejecute de forma rápida un programa de código fuente Go. La salida de este comando tiene que ser la frase Hola mundo, porque es lo que hace el comando.

Existe un comando específico que sirve para compilar a un ejecutable, que es go build. Si lo ejecutamos, por ejemplo, si hacemos go build hello.go, se creará un archivo ejecutable llamado hello o hello.exe, que cuando es ejecutado hará que se muestre ese mensaje por pantalla.

Lista de reproducción
  1. 1
    Instalar Go
    5 minutos
  2. 2
    Configurar Go en Windows a mano
    4 minutos
  3. 3
    Configurar Go en Linux y MacOS a mano
    5 minutos
  4. 4
    Escribir el Hola Mundo
    11 minutos
  5. 5
    Variables con var
    10 minutos
  6. 6
    Los tipos de datos en Go
    9 minutos
  7. 7
    Variables tipadas e inferencia de tipos
    8 minutos
  8. 8
    Operador := y múltiples variables
    7 minutos
  9. 9
    Constantes
    4 minutos
  10. 10
    Funciones básicas
    6 minutos
  11. 11
    Paso de parámetros a funciones
    7 minutos
  12. 12
    Retorno de funciones
    5 minutos
  13. 13
    Operadores aritméticos
    6 minutos