Go: Sintaxis
Golang sintaxis: domina la sintaxis del lenguaje Go con esta guía completa. Aprende estructuras de control, declaraciones, funciones y más para desarrollar aplicaciones eficientes y concisas.
Aprende Go GRATIS y certifícateEn este módulo, exploraremos en profundidad la sintaxis del lenguaje de programación Go, también conocido como Golang. Go es un lenguaje compilado y concurrente desarrollado por Google, diseñado para crear software eficiente y escalable. Comprender su sintaxis es fundamental para aprovechar al máximo sus capacidades.
Estructura básica de un programa en Go
Un programa en Go se compone de paquetes. El punto de entrada de cualquier aplicación es el paquete main
, que contiene la función main()
.
package main
import "fmt"
func main() {
fmt.Println("Hola, mundo")
}
Explicación:
package main
: Define el paquete principal del programa.import "fmt"
: Importa el paquetefmt
, que proporciona funciones de formato de E/S.func main()
: Función principal donde comienza la ejecución.
Declaración de variables
Go es un lenguaje estáticamente tipado. Las variables se pueden declarar de varias maneras.
Declaración explícita
var nombre string
nombre = "Juan"
Declaración con inicialización
var edad int = 30
Inferencia de tipos
altura := 1.75
El operador :=
declara e inicializa la variable, infiriendo el tipo automáticamente.
Tipos de datos
Go ofrece varios tipos de datos básicos:
- Enteros:
int
,int8
,int16
,int32
,int64
- Flotantes:
float32
,float64
- Booleanos:
bool
- Cadenas:
string
Ejemplo:
var contador int = 10
var precio float64 = 99.99
var activo bool = true
var mensaje string = "Bienvenido"
Constantes
Las constantes se declaran con la palabra clave const
.
const Pi = 3.1416
const Usuario = "admin"
Operadores
Go soporta operadores aritméticos, lógicos y relacionales.
- Aritméticos:
+
,-
,*
,/
,%
- Relacionales:
==
,!=
,>
,<
,>=
,<=
- Lógicos:
&&
,||
,!
Ejemplo:
a := 10
b := 20
// Operador aritmético
suma := a + b
// Operador relacional
esMayor := a > b
// Operador lógico
resultado := (a < b) && (b > 15)
Estructuras de control
Sentencia if
if condicion {
// Código si la condición es verdadera
} else {
// Código si la condición es falsa
}
Ejemplo:
edad := 18
if edad >= 18 {
fmt.Println("Es mayor de edad")
} else {
fmt.Println("Es menor de edad")
}
Sentencia switch
El switch
en Go es una alternativa concisa a múltiples condiciones if-else
.
switch variable {
case valor1:
// Código
case valor2:
// Código
default:
// Código por defecto
}
Ejemplo:
dia := "lunes"
switch dia {
case "lunes", "martes", "miércoles", "jueves", "viernes":
fmt.Println("Es un día laborable")
case "sábado", "domingo":
fmt.Println("Es fin de semana")
default:
fmt.Println("Día desconocido")
}
Bucles
Bucle for
Go utiliza el bucle for
como su única estructura de bucle.
for inicialización; condición; post {
// Código a ejecutar
}
Ejemplo:
for i := 0; i < 10; i++ {
fmt.Println(i)
}
También se puede utilizar for
como un bucle while
.
i := 0
for i < 10 {
fmt.Println(i)
i++
}
Rango en bucles
Para iterar sobre arreglos, slices, mapas o cadenas, se utiliza for range
.
Ejemplo con slice:
numeros := []int{1, 2, 3, 4, 5}
for indice, valor := range numeros {
fmt.Printf("Índice: %d, Valor: %d\n", indice, valor)
}
Funciones
Las funciones en Go se declaran con la palabra clave func
.
func nombreFuncion(parametros) tipoRetorno {
// Código
return valor
}
Ejemplo:
func sumar(a int, b int) int {
return a + b
}
Múltiples valores de retorno
Una función puede devolver múltiplos valores.
func operaciones(a int, b int) (int, int) {
suma := a + b
resta := a - b
return suma, resta
}
Uso:
suma, resta := operaciones(10, 5)
fmt.Println("Suma:", suma)
fmt.Println("Resta:", resta)
Funciones anónimas y closures
Go admite funciones anónimas y closures.
Ejemplo:
incrementar := func(x int) int {
return x + 1
}
resultado := incrementar(5)
fmt.Println(resultado) // Imprime 6
Paquetes e importaciones
Los paquetes permiten organizar el código y reutilizar funcionalidades.
Creación de un paquete:
Supongamos un archivo en la ruta matematica/operaciones.go
.
package matematica
func Sumar(a int, b int) int {
return a + b
}
Importación y uso:
package main
import (
"fmt"
"matematica"
)
func main() {
resultado := matematica.Sumar(2, 3)
fmt.Println(resultado)
}
Punteros
Go soporta punteros, que son referencias a ubicaciones de memoria.
Declaración de punteros:
var puntero *int
Asignación de dirección:
var numero int = 10
puntero = &numero
Desreferenciación:
fmt.Println(*puntero) // Imprime 10
Estructuras (Structs)
Las estructuras permiten crear tipos de datos compuestos.
Declaración:
type Persona struct {
Nombre string
Edad int
}
Instanciación y uso:
p := Persona{
Nombre: "Ana",
Edad: 25,
}
fmt.Println(p.Nombre)
Métodos
Se pueden definir métodos asociados a tipos.
func (p Persona) Saludar() {
fmt.Printf("Hola, soy %s\n", p.Nombre)
}
Uso:
p.Saludar()
Interfaces
Las interfaces definen comportamientos mediante la especificación de métodos.
Declaración:
type SerVivo interface {
Respirar()
}
Implementación:
func (p Persona) Respirar() {
fmt.Println("La persona está respirando")
}
Manejo de errores
Go maneja errores mediante el uso de valores de error retornados.
Ejemplo:
func dividir(a float64, b float64) (float64, error) {
if b == 0 {
return 0, fmt.Errorf("no se puede dividir entre cero")
}
return a / b, nil
}
Uso:
resultado, err := dividir(10, 0)
if err != nil {
fmt.Println(err)
} else {
fmt.Println("Resultado:", resultado)
}
Goroutines y concurrencia
Go incorpora concurrencia mediante goroutines y canales.
Goroutines:
go func() {
fmt.Println("Esto se ejecuta concurrentemente")
}()
Canales:
canal := make(chan int)
go func() {
canal <- 5
}()
valor := <-canal
fmt.Println(valor) // Imprime 5
Comentarios
Los comentarios son esenciales para documentar el código.
- Comentario de una línea:
// Esto es un comentario
- Comentario multilinea:
/*
Esto es un comentario
multilínea
*/
Este módulo cubre los aspectos fundamentales de la sintaxis en Go. Comprender estos conceptos es crucial para desarrollar aplicaciones sólidas y eficientes en este lenguaje. Se recomienda practicar cada sección y consultar la documentación oficial de Go para profundizar en cada tema.
Lecciones de este módulo de Go
Lecciones de programación del módulo Sintaxis del curso de Go.
Ejercicios de programación en este módulo de Go
Evalúa tus conocimientos en Sintaxis con ejercicios de programación Sintaxis de tipo Test, Puzzle, Código y Proyecto con VSCode.