Programa Golang que usa func con lista de argumentos variables

En Golang, una función que se puede llamar con una lista de argumentos variables se conoce como función variádica . Uno puede pasar cero o más argumentos en la función variádica. Si el último parámetro de una definición de función tiene el prefijo de puntos suspensivos…, entonces la función puede aceptar cualquier número de argumentos para ese parámetro.

Sintaxis de una función variádica:

func f(elem ...Type)

Aquí ...el operador le dice al programa Golang que almacene todos los argumentos de Tipo en el parámetro elem. Después de eso, vaya a crear una variable elem del tipo []Tipo. Por lo tanto, todos los valores pasados ​​se almacenan en un parámetro elem que es un segmento. También se puede pasar un segmento en el argumento en lugar de la lista de argumentos, ya que finalmente la función los convierte en un segmento.

Para obtener más información, puede consultar Funciones variadicas en Golang

Ventajas de usar una Función Variádica:

  • Pasar un segmento en una función es muy fácil.
  • Útil cuando se desconoce el número de parámetros.
  • Aumenta la legibilidad del programa.

Veamos algunos de los ejemplos para usar funciones con lista de argumentos variables:

Ejemplo 1:

// Go program that uses a function
// with variable argument list
package main
  
// Importing required packages
import (
    "fmt"
)
  
// Variadic function to return 
// the sum of the numbers
func add(num ...int) int {
    sum := 0
    for j := range num {
        sum += j
    }
    return sum
}
  
func main() {
    fmt.Println("Sum =", add(1, 2, 3, 4, 5, 7, 8, 6, 5, 4))
}

Producción:

Sum = 45

Ejemplo 2: un segmento también se puede usar como una lista de argumentos.

// Go program that uses a function
// with variable argument list
// Using a slice as the argument list
package main
  
// importing required modules
import (
    "fmt"
)
  
// Function to check if an element
// is present in the list or not
func check(x int, v ...int) {
  
    flag := false
    index := 0
    for i, j := range v {
        if j == x {
            flag = true
            index = i
        }
    }
  
    if flag {
        fmt.Println("Element ", x, " found at index:", index)
    } else {
        fmt.Println("Element not present in the list")
    }
}
func main() {
    el := []int{1, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    check(1, el...)
    check(10, el...)
}

Producción:

Element  1  found at index: 1
Element not present in the list

Publicación traducida automáticamente

Artículo escrito por Hritika Rajput y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *