Skip to main content

Command Palette

Search for a command to run...

Accepting Variable Number of Arguments in a Function

Published
1 min read
S

Software Engineer with an entrepreneurship gene. Love talking about code, products, UI/UX and how to build startups.

Functions in Go are capable of accepting multiple number of arguments, also called as variadic functions. One prominent example of such a function is fmt.Println as you can pass in any number of variables, it will print each of them separated by a space.

The way to define a variadic function is to prepend the data type with three dots. That variable is now accessible as a slice and can be iterated.

Here is a simple example which explains it.

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

This is a simple sum function, which iterated through all numbers and returns back the total. Now to call this function, you just pass all the numbers as separate arguments.

total := sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

By declaring the argument as a ...int, your numbers variable is now passed into the function as a slice of integers. But what if you already have a slice of numbers and want to pass it to this function?

numbers := []int{1,2,3,4,5}
total := sum(numbers...)

You just have to pass in the slice followed by three dots to unwrap the slice into individual parameters to the function.

More from this blog

Pro Golang Dev

14 posts