Go
Tutorial Go: Instalación y primer programa de Go
Go instalación y primer programa. Aprende a dominar la estructura, compilación y ejecución en Golang. Tutorial esencial para comenzar en Go.
Aprende Go GRATIS y certifícateEstructura básica de un programa Go
Un programa en Go se organiza principalmente en paquetes, y el punto de entrada es el paquete main
. Cada archivo fuente de Go debe pertenecer a un paquete, el cual se declara en la parte superior del archivo. La declaración se inicia con la palabra clave package
seguida del nombre del paquete. Para un programa ejecutable, el paquete debe ser main
.
package main
Tras la declaración del paquete, generalmente se incluyen las importaciones necesarias. Estas se especifican utilizando la palabra clave import
, seguida de una lista de los paquetes requeridos. Los nombres de los paquetes son cadenas que representan rutas relativas dentro del sistema de módulos de Go. Es posible importar múltiples paquetes en un bloque de paréntesis.
import (
"fmt"
"os"
)
El núcleo de un programa en Go se estructura en funciones. La función main
es la función principal de un programa ejecutable y marca el inicio de la ejecución. No recibe parámetros ni devuelve valores. Dentro de esta función, se escriben las instrucciones que el programa ejecutará.
func main() {
fmt.Println("Hola, mundo")
}
Las funciones y variables en Go deben ser declaradas antes de su uso. La declaración de una función comienza con la palabra clave func
, seguida del nombre de la función y una lista de parámetros opcionales. Las funciones pueden devolver múltiples valores, lo cual es una característica destacada de Go.
La organización de un programa en Go no solo se limita a su estructura técnica, sino que también enfatiza la claridad y la simplicidad. El uso de convenciones de nomenclatura y la agrupación lógica de funcionalidades en paquetes son esenciales para mantener el código legible y mantenible. Además, Go fomenta la escritura de código conciso mediante el uso de declaraciones y asignaciones simplificadas.
Compilación y ejecución
Para compilar y ejecutar un programa en Go, se utilizan principalmente las herramientas proporcionadas por el comando go
. Este comando es esencial para gestionar el ciclo de vida de un programa en Go, desde su compilación hasta su ejecución.
La compilación de un programa se realiza con el comando go build
. Este comando toma los archivos fuente de Go y genera un binario ejecutable. La sintaxis básica es:
go build nombre_del_archivo.go
Al ejecutar este comando, se genera un archivo ejecutable en el mismo directorio donde se encuentra el archivo fuente. Si el archivo fuente se llama nombre_del_archivo.go
, el ejecutable generado tendrá el nombre nombre_del_archivo
en sistemas Unix o nombre_del_archivo.exe
en sistemas Windows. Este ejecutable puede ejecutarse directamente desde la línea de comandos.
Para ejecutar el programa sin generar un archivo binario intermedio, se utiliza el comando go run
. Este comando compila y ejecuta el programa en un solo paso, lo cual es útil durante la fase de desarrollo para probar rápidamente cambios. La sintaxis es:
go run nombre_del_archivo.go
Este método es conveniente para pruebas rápidas, pero no genera un archivo ejecutable. Es importante notar que go run
compila el programa cada vez que se ejecuta, lo que puede ser menos eficiente que utilizar go build
para proyectos más grandes o cuando se necesita distribuir un binario.
La herramienta go
también proporciona opciones para controlar el proceso de compilación. Por ejemplo, se pueden establecer variables de entorno para definir el sistema operativo y la arquitectura de destino. Esto es útil para cross-compilation, permitiendo compilar un programa para diferentes plataformas desde una misma máquina de desarrollo. Las variables GOOS
y GOARCH
se utilizan para este propósito:
GOOS=windows GOARCH=amd64 go build nombre_del_archivo.go
Este comando compilará el programa para un entorno Windows de 64 bits, independientemente del sistema operativo de la máquina de desarrollo.
Es fundamental entender cómo Go gestiona las dependencias durante la compilación. Go utiliza un sistema de módulos que facilita la gestión de versiones y la resolución de dependencias. El archivo go.mod
en el directorio raíz del proyecto especifica las dependencias y sus versiones. Antes de compilar, es recomendable asegurarse de que todas las dependencias estén actualizadas utilizando el comando:
go mod tidy
Este comando garantiza que el archivo go.mod
y el archivo go.sum
reflejen correctamente las dependencias utilizadas en el proyecto, eliminando cualquier referencia a paquetes que ya no son necesarios.
El paquete main y la función main
En Go, el paquete main
es fundamental para la creación de programas ejecutables. Un archivo fuente que pertenece a este paquete indica que es parte de un programa que se puede compilar y ejecutar directamente. La elección del nombre main
para el paquete no es arbitraria; es una convención que establece el punto de entrada del programa. A diferencia de otros lenguajes donde se puede especificar un punto de entrada diferente, en Go, el paquete main
es obligatorio para cualquier programa ejecutable.
La función main
, que se declara dentro del paquete main
, es el punto de inicio de la ejecución del programa. Esta función no acepta parámetros y no devuelve valores, lo que simplifica su uso. Su propósito es ejecutar el código que constituye el núcleo del programa. A continuación se muestra un ejemplo básico de un programa en Go:
package main
import "fmt"
func main() {
fmt.Println("Hola, mundo")
}
En este ejemplo, el programa comienza a ejecutarse desde la función main
. La llamada a fmt.Println
imprime una cadena de texto en la consola. La función main
no puede ser llamada explícitamente por otras funciones dentro del programa, ya que su ejecución es gestionada automáticamente por el runtime de Go cuando el programa se inicia.
Es importante destacar que, aunque un proyecto en Go puede contener múltiples archivos fuente, solamente uno de ellos debe contener el paquete main
y la función main
. Esto asegura un único punto de entrada coherente para la ejecución del programa. Además, el uso de múltiples archivos en el paquete main
permite la organización modular del código, aunque siempre debe haber una única función main
que actúe como el inicio del flujo de ejecución.
La estructura y restricciones del paquete main
y la función main
en Go fomentan un diseño de código sencillo y directo, eliminando ambigüedades sobre el punto de entrada del programa.
Paquetes e importaciones
En Go, los paquetes son la unidad básica de organización de código. Cada archivo fuente de Go pertenece a un paquete, y estos paquetes permiten la modularización y reutilización del código. La declaración de un paquete se realiza al inicio de un archivo fuente con la palabra clave package
, seguida del nombre del paquete. Este nombre no tiene que coincidir con el nombre del directorio que contiene el archivo, pero es una práctica común que lo haga para mantener la organización.
La gestión de dependencias en Go se realiza a través de las importaciones. Para utilizar funciones, tipos o variables de otros paquetes, es necesario importarlos en el archivo donde se desean usar. Esto se hace con la palabra clave import
seguida del nombre del paquete. Los paquetes pueden ser importados individualmente o en un bloque si se necesita importar más de uno. Un aspecto clave es que Go solo permite importar paquetes que son utilizados en el código, y el compilador generará un error si se importan paquetes no utilizados.
import "fmt"
import (
"os"
"path/filepath"
)
El uso de alias en las importaciones es posible cuando se desea evitar conflictos de nombres o cuando se prefiere un nombre más corto o específico. Esto se logra asignando un alias antes del nombre del paquete. Por ejemplo, si el paquete math/rand
se importa como r
, todas las funciones del paquete pueden ser referenciadas usando r
.
import r "math/rand"
Go también admite la importación de paquetes de manera anónima utilizando un guion bajo (_
) como alias. Esta técnica se utiliza cuando se necesita ejecutar el código de inicialización de un paquete sin utilizar directamente ninguna de sus funciones o tipos. Es común en situaciones donde los paquetes registran controladores o inicializan recursos globales.
import _ "net/http/pprof"
El sistema de módulos de Go, introducido en versiones recientes, ha mejorado la gestión de paquetes y dependencias. Los módulos permiten especificar las dependencias de un proyecto en el archivo go.mod
, asegurando que las versiones correctas de los paquetes se utilicen durante la compilación. Este archivo es crucial para mantener la consistencia en entornos de desarrollo y producción.
El sistema de importaciones de Go enfatiza la simplicidad y la eficiencia. Las importaciones deben ser explícitas, lo que ayuda a mantener el código limpio y fácil de entender. Además, el manejo de dependencias a través de módulos asegura que los proyectos sean reproducibles y que las actualizaciones de dependencias se realicen de manera controlada.
Ejercicios de esta lección Instalación y primer programa de Go
Evalúa tus conocimientos de esta lección Instalación y primer programa de Go con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Cadenas de texto y manipulación
Selectores y mutexes: concurrencia y exclusión
Agenda de contactos por consola
Composición de structs en lugar de herencia
Estructuras de control
Arrays y slices
Control de flujo y estructuras de bucle
Sistema API REST gestión de libros
Métodos con receptores por valor y por puntero
API REST con net/http
Generics
Evaluación Go
Métodos HTTP con net/http
Crear e invocar funciones
Operadores y expresiones
Polimorfismo a través de Interfaces
Manejo explícito de errores
Estructuras structs
Tipos de datos, variables y constantes
Introducción a Go
Canales y comunicación entre Goroutines
Condiciones de carrera
Punteros y referencias
Goroutines y concurrencia básica
Instalación Go primer programa
Errores personalizados y trazabilidad
Estructuras de datos Mapas
Cliente de API OpenWeatherMap clima
Todas las lecciones de Go
Accede a todas las lecciones de Go y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Go
Introducción Y Entorno
Instalación Y Primer Programa De Go
Introducción Y Entorno
Tipos De Datos, Variables Y Constantes
Sintaxis
Operadores Y Expresiones
Sintaxis
Cadenas De Texto Y Manipulación
Sintaxis
Estructuras De Control
Sintaxis
Control De Flujo Y Estructuras De Bucle
Sintaxis
Funciones
Sintaxis
Arrays Y Slices
Estructuras De Datos
Mapas
Estructuras De Datos
Punteros Y Referencias
Estructuras De Datos
Estructuras Structs
Programación Orientada A Objetos
Métodos Con Receptores Por Valor Y Por Puntero
Programación Orientada A Objetos
Polimorfismo A Través De Interfaces
Programación Orientada A Objetos
Composición De Structs En Lugar De Herencia
Programación Orientada A Objetos
Generics
Programación Orientada A Objetos
Manejo Explícito De Errores
Manejo De Errores Y Excepciones
Errores Personalizados Y Trazabilidad
Manejo De Errores Y Excepciones
Métodos Http Con Net/http
Comunicación Por Http
Api Rest Con Net/http
Comunicación Por Http
Goroutines Y Concurrencia Básica
Concurrencia Y Paralelismo
Canales Y Comunicación Entre Goroutines
Concurrencia Y Paralelismo
Condiciones De Carrera
Concurrencia Y Paralelismo
Selectores Y Mutexes Concurrencia Y Exclusión Mutua
Concurrencia Y Paralelismo
Evaluación Conocimientos Go
Evaluación
Certificados de superación de Go
Supera todos los ejercicios de programación del curso de Go y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender la estructura básica de un programa en Go.
- Instalar y configurar correctamente el entorno de desarrollo de Go.
- Escribir y ejecutar un programa simple en Go.
- Utilizar el comando
go build
para compilar programas. - Ejecutar programas directamente con
go run
. - Gestionar dependencias y módulos en Go.
- Entender el papel crucial del paquete
main
y la funciónmain
. - Importar y utilizar correctamente paquetes en Go.