Golang program that uses func with variable argument list

In Golang, a function that can be called with a variable argument list is known as a variadic function. One can pass zero or more arguments in the variadic function. If the last parameter of a function definition is prefixed by ellipsis …, then the function can accept any number of arguments for that parameter.

Syntax of a variadic function:

func f(elem ...Type)

Here ... operator tells Golang program to store all arguments of Type in elem parameter. After that, Go create an elem variable of the type []Type. Therefore, all the values passed are stored in an elem parameter which is a slice. A slice can also be passed in the argument instead of the argument list, as finally function is converting them into a slice.

For more information you can refer to Variadic Functions in Golang

Advantages of using a Variadic Function:



  • Passing a slice in a function is very easy.
  • Useful when the number of parameters is unknown.
  • Increases the readability of the program.

Let’s see some of the examples to use functions with variable argument list:

Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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))
}

chevron_right


Output:

Sum = 45

Example 2: A slice can also be used as an argument list.

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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...)
}

chevron_right


Output:

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



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.