Sintaxis
La sintaxis de una función variádica es la siguiente:func <nombre_función>(<nombre_parámetro>... <tipo>) { <código_función> }
En apariencia, la sintaxis es muy similar a la de una función normal. Sin embargo, al indicar tres puntos estamos indicando que a partir de ahí podemos pasar tantos parámetros como queramos, siempre que sean del mismo tipo.
Esto no restringe a que la función sólo permita este parámetro, pues podemos usar diferentes parámetros normales. La limitación está en que los parámetros normales han de pasarse en primer lugar, y que el parámetro variádico sólo puede ser uno y ser el último.
Ejemplo
El siguiente código muestra un ejemplo de función variádica, en la cual pasamos un primer parámetro que es el factor multiplicador, y una lista de números variable, los cuales serán multiplicados por la función:
package main import "fmt" func main() { multiplicador(2, 10, 20, 25, 36, 47) } func multiplicador(factor int, valores ...int) { for indice, valor := range valores { fmt.Printf("Indice %v > %v x %v = %v\n", indice, valor, factor, valor*factor) } }
La función main()
es la función con la que arranca la aplicación. El primer parámetro (2) es el factor multiplicador. El resto de parámetros son los valores por los que se va a multiplicar por el factor. Esta lista de valores es la que puede ser variable (de 1 a n valores).
La función multiplicador()
tiene dos parámetros:
factor
: Parámetro normal. Permite un entero como factor multiplicadorvalores...
: Parámetro variádico. Permite tantos enteros como queramos multiplicar porfactor
Internamente, el parámetro valores
será un slice
o array
variable de números enteros. Por ello, el bucle for
es recorrido gracias al iterador range
, y de cada valor del array obtendrá su índice y su valor (que se guardan en las variables con el mismo nombre).
Dentro de bucle, usaremos la función Printf()
del paquete estándar de entrada y salida fmt
. Como primer parámetro pasamos una cadena con la plantilla de valores a imprimir en pantalla. El verbo de plantilla %v
, indica que será reemplazado por un valor en el formato por defecto. Esto significa que si el valor es un entero se visualizará como entero, si en un número decimal se visualizará como tal, si es una cadena se visualizará como cadena, si es un tipo boolean como valor booleano.
Después de la cadena de plantilla, se especifican las expresiones a visualizar, una por cada verbo de plantilla especificado en la cadena. En este caso será, por orden: la plantilla, el valor procesado en ese momento, el factor multiplicador, y la multiplicación del valor por el factor. Finalmente, con el código \n
imprimimos un fin y salto de línea.
Como curiosidad, cabe destacar que la función Printf
es también una función variádica.
Ejecución del código
Guardamos el código en un archivo llamado variadic.go
. A continuación, desde la consola o terminal del sistema operativo a accedemos al directorio en donde se encuentra este archivo, y lo ejecutamos con el siguiente comando:
$ go run variadic.go Indice 0 > 10 x 2 = 20 Indice 1 > 20 x 2 = 40 Indice 2 > 25 x 2 = 50 Indice 3 > 36 x 2 = 72 Indice 4 > 47 x 2 = 94
Enlaces de interés
- Paquete fmt: https://golang.org/pkg/fmt/
- Pasando argumentos a parámetros ...: https://golang.org/ref/spec#Passing_arguments_to_..._parameters
No hay comentarios:
Publicar un comentario