Open In App

Golang program that uses func with variable argument list

Improve
Improve
Like Article
Like
Save
Share
Report

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:

Go


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

Output:

Sum = 45

Example 2:

A slice can also be used as an argument list.

Go

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

Output:

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


Last Updated : 29 Feb, 2024
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads