What is a Variadic Function in Go?
A variadic function is a function that accepts a variable number of arguments of the same type.
This is useful when you don’t know how many values a caller might pass. Instead of defining a fixed number of parameters, you allow the caller to pass zero or more arguments.
Syntax
func myFunc(args ...int) { // args is a slice of int }
- The ... before the type means the function accepts any number of int arguments, including none.
- Inside the function, args behaves like a slice ([]int).
Real-World Example: Sum of Prices
Imagine you’re summing prices of products in a cart:
package main import "fmt" // Variadic function to sum prices func SumPrices(prices ...float64) float64 { total := 0.0 for _, price := range prices { total += price } return total } func main() { fmt.Println(SumPrices(10.99, 20.00)) // 30.99 fmt.Println(SumPrices(5.99, 15.50, 9.99, 1.99)) // 33.47 fmt.Println(SumPrices()) // 0.0 }
Key Points
Feature | Explanation |
---|---|
...type | Used only in the last parameter of the function. |
Internally | Treated as a slice (e.g., []int , []string ). |
Optional | Can pass zero or more values. |
Expand slice | Use myFunc(mySlice...) to expand a slice into arguments. |
Gotchas
func printNames(names ...string) { for _, name := range names { fmt.Println(name) } } func main() { myNames := []string{"Alice", "Bob", "Carol"} // You must use ... to expand a slice printNames(myNames...) // ✅ // printNames(myNames) // ❌ compile error }
When to Use Variadic Functions
- Calculations (sum, average)
- Logging utilities
- Formatting strings
- Joining or filtering collections
Top comments (0)