A logo showing the text blog.marcnuri.com
English
Inicio»Go»Entendiendo las funciones variádicas en Go

Entradas Recientes

  • Fabric8 Kubernetes Client 7.2.0 está disponible!
  • Conectarse a un servidor MCP con JavaScript y AI SDK
  • Conectarse a un servidor MCP con JavaScript y LangChain.js
  • El Futuro de las Herramientas para Desarrolladores en la era de la IA
  • Conectarse a un servidor Model Context Protocol (MCP) con Java y LangChain4j

Categorías

  • Antiguo
  • Front-end
  • Go
  • Herramientas
  • Industria y negocios
  • Inteligencia Artificial
  • Java
  • JavaScript
  • Operaciones
  • Personal
  • Proyectos personales

Archivos

  • mayo 2025
  • abril 2025
  • marzo 2025
  • febrero 2025
  • enero 2025
  • diciembre 2024
  • noviembre 2024
  • agosto 2024
  • junio 2024
  • mayo 2024
  • abril 2024
  • marzo 2024
  • febrero 2024
  • enero 2024
  • diciembre 2023
  • noviembre 2023
  • octubre 2023
  • septiembre 2023
  • agosto 2023
  • julio 2023
  • junio 2023
  • mayo 2023
  • abril 2023
  • marzo 2023
  • febrero 2023
  • enero 2023
  • diciembre 2022
  • noviembre 2022
  • octubre 2022
  • agosto 2022
  • julio 2022
  • mayo 2022
  • marzo 2022
  • febrero 2022
  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021
  • agosto 2021
  • julio 2021
  • diciembre 2020
  • octubre 2020
  • agosto 2020
  • junio 2020
  • mayo 2020
  • marzo 2020
  • febrero 2020
  • enero 2020
  • noviembre 2019
  • octubre 2019
  • julio 2019
  • diciembre 2018
  • agosto 2018
  • julio 2018
  • junio 2018
  • mayo 2018
  • marzo 2018
  • febrero 2018
  • noviembre 2017
  • octubre 2017
  • agosto 2017
  • julio 2017
  • enero 2017
  • julio 2016
  • enero 2016
  • diciembre 2015
  • noviembre 2015
  • diciembre 2014
  • marzo 2014
  • febrero 2011
  • junio 2008
  • mayo 2008
  • abril 2008
  • enero 2008
  • junio 2007
  • mayo 2007
  • abril 2007
  • marzo 2007

Entendiendo las funciones variádicas en Go

2020-02-11 en Go etiquetado Go / Funciones por Marc Nuri | Última actualización: 2025-03-02
English version

Introducción

Las funciones variádicas son una característica poderosa en Go que permite a las funciones aceptar un número variable de argumentos (desde cero hasta muchos). Esta flexibilidad las hace particularmente útiles en escenarios donde el número de parámetros de entrada puede variar. Por ejemplo, la función fmt.Println es una función variádica que puede aceptar cualquier número de argumentos de cualquier tipo.

En este artículo, explicaré qué son las funciones variádicas, cómo definirlas y cómo usarlas de forma efectiva.

Definición de funciones variádicas

Para definir una función variádica en Go, utiliza puntos suspensivos (...) antes del tipo de parámetro. Esto le indica al compilador que la función puede aceptar cero o más argumentos de ese tipo.

Aquí tienes un ejemplo:

main.go
package main

import (
	"fmt"
)

func greet(names ...string) {
	for _, name := range names {
		fmt.Printf("Greetings %s\n", name)
	}
}

func main() {
	greet()
	greet("blog.marcnuri.com")
	greet("Professor Falken", "Dr. Emmett Brown")
}

En este ejemplo, la función greet puede aceptar cualquier número de argumentos de tipo string.

En la función main, llamamos a greet con cero, uno y dos argumentos. La salida será:

Greetings blog.marcnuri.com
Greetings Professor Falken
Greetings Dr. Emmett Brown
  • En la primera llamada a greet no pasamos argumentos, por lo que la función no imprime nada.
  • La segunda llamada con un argumento imprime un saludo a blog.marcnuri.com.
  • La tercera llamada con dos argumentos imprime saludos a Professor Falken y Dr. Emmett Brown.

Consejo

Sólo puedes tener un parámetro variádico en una función, y debe ser siempre el último parámetro.

Uso de funciones variádicas

Las funciones variádicas pueden ser llamadas con cualquier número de argumentos, incluyendo ninguno. Dentro de la función, el parámetro variádico se comporta como una slice del tipo especificado. Esto permite realizar operaciones típicas de slices, como la iteración.

Si tienes un slice y quieres pasar sus elementos a una función variádica, utiliza el operador ... para expandir el slice:

main.go
package main

import (
	"fmt"
)

func sum(numbers ...int) int {
	total := 0
	for _, number := range numbers {
		total += number
	}
	return total
}

func main() {
	nums := []int{1, 2, 3, 4}
	fmt.Println(sum(nums...)) // Outputs: 10
}

Aquí, la función sum calcula la suma de todos los enteros proporcionados. Al pasar nums..., expandimos el slice en argumentos individuales para la función variádica.

Buenas prácticas y consideraciones

Cuando utilices funciones variádicas, considera las siguientes buenas prácticas:

  • Usa con moderación: Aunque las funciones variádicas ofrecen flexibilidad, pueden hacer que tu código sea menos claro si se usan en exceso.
  • Seguridad de tipado: Ten cuidado al usar interface{} como tipo de parámetro variádico, ya que reduce la seguridad de tipado.
  • Rendimiento: Las funciones variádicas pueden ser menos eficientes que las funciones de aridad fija en operaciones de alta frecuencia, así que úsalas con prudencia.
  • Legibilidad: Utiliza funciones variádicas cuando mejoren la legibilidad y mantenibilidad al reducir la necesidad de múltiples funciones sobrecargadas.

Conclusión

Las funciones variádicas en Go proporcionan una forma potente de crear código flexible y legible. Son particularmente útiles cuando necesitas manejar un número desconocido de argumentos o quieres simplificar tu API. Al entender cómo definir y usar funciones variádicas, puedes escribir código Go más elegante y eficiente.

Twitter iconFacebook iconLinkedIn iconPinterest iconEmail icon

Navegador de artículos
Enums en Go: Un enfoque alternativoCómo usar sets en Go
© 2007 - 2025 Marc Nuri