Go
Tutorial Go: Funciones
Go funciones: aprende a definir, llamar y manejar parámetros, argumentos y retornos múltiples para escribir código efectivo y seguro.
Aprende Go GRATIS y certifícateDefinición y llamada de funciones
En Go, las funciones son bloques de código que realizan una tarea específica y pueden ser reutilizadas en diferentes partes de un programa. La definición de una función comienza con la palabra clave func
, seguida del nombre de la función, una lista de parámetros entre paréntesis, y el tipo de retorno si lo hay. A continuación, se coloca el cuerpo de la función entre llaves {}
.
El siguiente es un ejemplo básico de definición de una función en Go:
func sumar(a int, b int) int {
return a + b
}
En este ejemplo, sumar
es el nombre de la función, que toma dos parámetros de tipo entero (a
y b
) y devuelve un entero. El cuerpo de la función contiene una instrucción que retorna la suma de los dos parámetros.
Para llamar a una función en Go, simplemente se utiliza el nombre de la función seguido de los argumentos entre paréntesis. Es importante que los tipos y el número de argumentos coincidan con los definidos en la función. Aquí se muestra cómo llamar a la función sumar
:
resultado := sumar(3, 5)
En este caso, la función sumar
es llamada con los argumentos 3
y 5
, y el resultado es almacenado en la variable resultado
.
Las funciones en Go pueden ser definidas en cualquier parte del paquete, pero es común definirlas al principio o al final de un archivo para mantener la organización del código. Además, las funciones pueden ser anónimas y asignadas a variables, lo que permite su uso como valores de primera clase.
Un ejemplo de función anónima sería:
restar := func(a int, b int) int {
return a - b
}
En este caso, restar
es una variable que almacena una función anónima que resta dos números. Las funciones anónimas son útiles para situaciones donde se necesita una función para un uso específico y único.
Parámetros, argumentos y valores de retorno
En Go, los parámetros de una función se definen en su declaración y especifican los tipos de datos que la función puede recibir. Los parámetros se listan entre paréntesis después del nombre de la función, y cada uno consta de un nombre seguido de su tipo. Es posible definir múltiples parámetros del mismo tipo sin repetir el tipo para cada uno, por ejemplo:
func procesarDatos(x, y int, z string) {
// cuerpo de la función
}
Aquí, x
y y
son parámetros de tipo entero, mientras que z
es de tipo cadena de caracteres. Los argumentos son los valores que se pasan a la función cuando se llama, y deben coincidir en tipo y orden con los parámetros definidos. Por ejemplo:
procesarDatos(10, 20, "ejemplo")
En este caso, 10
y 20
se pasan como argumentos para los parámetros x
y y
, respectivamente, y "ejemplo"
para z
.
El valor de retorno de una función se especifica después de los paréntesis de los parámetros, y puede ser de cualquier tipo de datos válido en Go. Si una función no devuelve un valor, no es necesario especificar un tipo de retorno. Cuando una función retorna un valor, se utiliza la instrucción return
para devolver el valor especificado:
func multiplicar(a int, b int) int {
return a * b
}
Esta función multiplicar
toma dos enteros como parámetros y devuelve el producto de ambos como un entero. La instrucción return
finaliza la ejecución de la función y devuelve el valor al lugar donde la función fue llamada.
Es importante destacar que Go soporta el retorno de múltiples valores desde una función, lo cual es una característica que se explora más a fondo en otra sección de esta lección. En cuanto a los valores de retorno únicos, es esencial que el tipo del valor retornado coincida con el tipo especificado en la declaración de la función. Si una función está definida para retornar un valor, es obligatorio que incluya una instrucción return
que efectivamente devuelva un valor del tipo correcto.
Go también permite el uso de valores de retorno nombrados para mejorar la claridad del código, aunque esta técnica se discute en detalle en una sección específica dedicada a valores de retorno múltiples y nombrados.
Valores de retorno múltiples y nombrados
Go es un lenguaje que soporta la capacidad de que las funciones devuelvan múltiples valores, lo cual es una característica que permite escribir código más expresivo y conciso. Al definir una función que retorna múltiples valores, se especifican los tipos de todos los valores de retorno entre paréntesis después de los parámetros de la función. Esta funcionalidad es particularmente útil para devolver un valor principal y un error, lo cual es un patrón común en Go.
Por ejemplo, una función que realiza una división y puede devolver un resultado junto con un error en caso de división por cero se define de la siguiente manera:
func dividir(dividendo, divisor float64) (float64, error) {
if divisor == 0 {
return 0, fmt.Errorf("división por cero")
}
return dividendo / divisor, nil
}
En este caso, la función dividir
devuelve dos valores: el resultado de la división y un valor de tipo error
. Si el divisor es cero, se devuelve un error utilizando fmt.Errorf
. En el caso contrario, se devuelve el resultado de la división y un nil
indicando que no hay error.
Al llamar a una función que retorna múltiples valores, se pueden asignar estos valores a variables individuales:
resultado, err := dividir(10, 2)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Resultado:", resultado)
}
En este ejemplo, resultado
almacena el valor de la división y err
almacena el posible error. Se verifica si err
es distinto de nil
para determinar si ocurrió un error durante la operación.
Además de los valores de retorno múltiples, Go permite usar valores de retorno nombrados, que son variables predefinidas como parte de la declaración de la función. Esto puede mejorar la legibilidad del código al documentar los propósitos de los valores de retorno directamente en la firma de la función. Aquí un ejemplo:
func calcular(a, b int) (suma int, producto int) {
suma = a + b
producto = a * b
return
}
En este caso, suma
y producto
son valores de retorno nombrados. Al final de la función, un simple return
es suficiente para devolver ambos valores, ya que se asignan automáticamente a las variables nombradas.
El uso de valores de retorno nombrados puede ser beneficioso para simplificar el código, especialmente en funciones más largas o complejas donde los valores de retorno tienen un significado particular. Sin embargo, es importante utilizarlos con moderación para evitar confusiones sobre el flujo de la función.
Ejercicios de esta lección Funciones
Evalúa tus conocimientos de esta lección Funciones 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 sintaxis básica para definir funciones en Go.
- Aprender a manejar parámetros y argumentos de funciones.
- Implementar funciones con diferentes tipos de valores de retorno.
- Utilizar funciones anónimas y de alto nivel.
- Manejar valores de retorno múltiples y nombrados.