Cómo escribir su primer programa en Go

Introducción

El programa “Hello, World!” es un clásico y una tradición reconocida en la programación computacional. Se trata de un primer programa sencillo y completo para principiantes y es una buena alternativa para garantizar que su entorno se configure de manera adecuada.

Este tutorial le servirá como guía para crear este programa en Go. Sin embargo, para hacer que el programa sea más interesante, modificará el programa tradicional “Hello, World!” a fin de que solicite al usuario su nombre. Luego usará el nombre en el saludo. Al completar el tutorial, obtendrá un programa que tendrá el siguiente aspecto cuando lo ejecute:

OutputPlease enter your name. Sammy Hello, Sammy! I'm Go! 

Requisitos previos

Antes de comenzar este tutorial, deberá disponer de un entorno de desarrollo local de Go configurado en su computadora. Puede configurarlo a través de uno de los siguientes tutoriales:

  • Cómo instalar Go y configurar un entorno de programación local en macOS
  • Cómo instalar Go y configurar un entorno de programación local en Ubuntu 18.04
  • Cómo instalar Go y configurar un entorno de programación local en Windows 10

Paso 1: Escribir el programa básico “Hello, World!”

Para escribir el programa “Hello, World!”, abra un editor de texto de línea de comandos como nano y cree un nuevo archivo:

  • nano hello.go

Una vez que el archivo de texto se abra en la ventana del terminal, escribirá su programa:

hello.go

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

Desglosaremos los diferentes componentes del código.

package es una palabra clave de Go que define el paquete de código al que pertenece este archivo. Solo puede haber un paquete por carpeta y cada archivo .go debe declarar el mismo nombre de paquete en la parte superior de su archivo. En este ejemplo, el código pertenece al paquete main.

import es una palabra clave de Go que indica al compilador de Go los demás paquetes que quiere usar en este archivo. Aquí, se importa el paquete fmt que viene con la biblioteca estándar. El paquete fmt proporciona funciones de formato e impresión que pueden ser útiles en el desarrollo.

fmt.Println es una función de Go que se encuentra en el paquete fmt e indica a la computadora que imprima texto en la pantalla.

Se sigue la función fmt.Println con una secuencia de caracteres, como “Hello, World!”, escrita entre comillas. Todos los caracteres que se encuentran entre comillas se conocen como cadenas. La función fmt.Println imprimirá estas cadenas en la pantalla cuando se ejecute el programa.

Guarde y cierre nano escribiendo CTRL + X. Cuando se le pregunte si desea guardar el archivo, pulse Y.

Ahora podrá probar su programa.

Paso 2: Ejecutar un programa de Go

Una vez que escriba su programa “Hello, World!”, estará listo para la ejecución. Usará el comando go, seguido del nombre del archivo que acaba de crear.

  • go run hello.go

El programa ejecutará y mostrará este resultado:

OutputHello, World! 

Analizaremos lo que realmente sucedió.

Los programas de Go deben compilarse antes de su ejecución. Cuando invoque a go run con el nombre de un archivo, en este caso hello.go, el comando go compilará la aplicación y luego ejecutará el binario resultante. Para los programas escritos en lenguajes de programación compilados, un compilador tomará el código fuente de un programa y generará otro tipo de código de bajo nivel (como el código de máquina) para producir un programa ejecutable.

Las aplicaciones de Go requieren un paquete main y precisamente una función main() que sirva como punto de entrada para ellas. La función main no recibe argumentos ni muestra valores. En lugar de ello, indica al compilador de Go que el paquete debe compilarse como un paquete ejecutable.

Una vez que este se compila, se ejecuta el código ingresando la función main() en el paquete main. Ejecuta la línea fmt.Println(“Hello, World!”) llamando a la función fmt.Println. El valor de la cadena de Hello, World! luego se pasa a la función. En este ejemplo, la cadena Hello, World! también se conoce como argumento porque es un valor que se pasa a un método.

Las citas que están en ambos lados de Hello, World! no se imprimen en la pantalla porque se utilizan para indicar a Go dónde comienza y termina su cadena.

Siguiendo este paso, creó un programa funcional “Hello, World!” con Go. En el siguiente paso, aprenderá a hacer que el programa sea más interactivo.

Paso 3: Solicitar entradas del usuario

Cada vez que ejecuta su programa, produce el mismo resultado. En este paso, puede agregar a su programa la función para que solicite el nombre del usuario. Luego usará el nombre de este en el resultado.

En lugar de modificar su programa existente, cree uno nuevo llamado greeting.go con el editor nano:

  • nano greeting.go

Primero, añada este código, el cual solicita al usuario que ingrese su nombre:

greeting.go

package main  import (     "fmt" )  func main() {   fmt.Println("Please enter your name.") } 

Una vez más, utilice la función fmt.Println para imprimir texto en la pantalla.

Añada ahora la línea resaltada para almacenar la entrada del usuario:

greeting.go

package main  import (     "fmt" )  func main() {   fmt.Println("Please enter your name.")   var name string } 

La línea var name string creará una nueva variable usando la palabra clave var. Se asigna a la variable el nombre name y pertenece al tipo string.

A continuación, añada la línea resaltada para capturar la entrada del usuario:

greeting.go

package main  import (     "fmt" )  func main() {   fmt.Println("Please enter your name.")   var name string   fmt.Scanln(&name) } 

El método fmt.Scanln indica a la computadora que espere una entrada del teclado que termine con una nueva línea o (n), carácter. Esto hace que el programa se detenga, lo cual permite que el usuario introduzca cualquier texto que desee. El programa se reanudará cuando el usuario presione la tecla ENTER en su teclado. Todas las pulsaciones de teclas, incluida la de la tecla ENTER, se capturan y se convierten en una cadena de caracteres.

Le convendrá usar esos caracteres en el resultado de su programa, por lo que los guardará escribiéndolos en la variable de cadena llamada name. Go almacena esa cadena en la memoria de su computadora hasta que el programa termine de ejecutarse.

Por último, añada la siguiente línea resaltada en su programa para imprimir el resultado:

greeting.go

package main  import (     "fmt" )  func main() {   fmt.Println("Please enter your name.")   var name string   fmt.Scanln(&name)   fmt.Printf("Hi, %s! I'm Go!", name) } 

Esta vez, en lugar de usar de nuevo el método fmt.Println, empleará fmt.Println. La función fmt.Printf toma una cadena y al utilizar verbos especiales de impresión, (%s), inserta el valor de name en la cadena. Se requiere esto porque Go no admite la interpolación de cadenas, lo cual le permitiría tomar el valor asignado a una variable y disponerlo dentro de una cadena.

Guarde y cierre nano presionando CTRL + X, y presione Y cuando se le pregunte si desea guardar el archivo.

Ahora ejecute el programa. Se le solicitará su nombre; introdúzcalo y presione ENTER. Es posible que resultado no sea exactamente el que espera:

OutputPlease enter your name. Sammy Hi, Sammy ! I'm Go! 

En lugar de Hi, Sammy! I'm Go!, hay una salto de línea inmediatamente después del nombre.

El programa capturó todas sus pulsaciones de teclas, incluida la tecla ENTER que presionamos para indicar al programa que continúe. En una cadena, al presionar la tecla ENTER se crea un carácter especial que crea una nueva línea. El resultado del programa cumple exactamente con lo que usted indicó; muestra el texto que ingresó, incluida esa nueva línea. No es lo que esperaba del resultado, pero puede corregirlo con funciones adicionales.

Abra el archivo greeting.go en su editor:

  • nano greeting.go

Ubique la siguiente línea en su programa:

greeting.go

... fmt.Scanln(&name) ... 

Añada la siguiente línea justo después de esta:

greeting.go

name = strings.TrimSpace(name) 

Esto utiliza la función TrimSpace, del paquete strings de la biblioteca estándar de Go, en la cadena que capturó con fmt.Scanln. La función strings.TrimSpace elimina todos los caracteres de espacio, incluidas las líneas nuevas, del inicio y del final de una cadena. En este caso, elimina el carácter de nueva línea al final de la cadena que se creó cuando presionó ENTER.

Para usar el paquete strings deberá importarlo en la parte superior del programa.

Ubique las siguientes líneas en su programa:

greeting.go

import (     "fmt" ) 

Añada la siguiente línea para importar el paquete strings:

greeting.go

import (     "fmt"   "strings" ) 

Su programa ahora contendrá lo siguiente:

greeting.go

package main  import (         "fmt"         "strings" )  func main() {     fmt.Println("Please enter your name.")     var name string     fmt.Scanln(&name)     fmt.Printf("Hi, %s! I'm Go!", name)     name = strings.TrimSpace(name) } 

Guarde y cierre nano. Presione CTRL + X y luego Y cuando se le solicite guardar el archivo.

Ejecute el programa de nuevo:

  • go run greeting.go

Esta vez, después de ingresar su nombre y presionar ENTER, obtendrá el resultado esperado:

OutputPlease enter your name. Sammy Hi, Sammy! I'm Go! 

Ahora, contará con un programa de Go que obtiene entradas de un usuario y las imprime de vuelta en la pantalla.

Conclusión

A través de este tutorial, escribió un programa “Hello, World!” que obtiene entradas de un usuario, procesa el producto y muestra el resultado. Ahora que dispone de un programa básico con el que trabajará, intente ampliarlo. Por ejemplo, solicite el color favorito del usuario y haga que el programa diga que su color favorito es el rojo. Puede, incluso, intentar usar esta misma técnica para crear un programa sencillo de Mad-Lib.