62 lines
1.2 KiB
Markdown
62 lines
1.2 KiB
Markdown
|
---
|
||
|
title: Variadic Functions
|
||
|
---
|
||
|
|
||
|
## Variadic Functions
|
||
|
|
||
|
Variadic functions are functions that can be called with any number of trailing arguments.
|
||
|
|
||
|
This is a useful feature when we are working on web-apps.
|
||
|
|
||
|
Sometimes we are not how many elements we will need to pass to the HTML templating engine.
|
||
|
|
||
|
Here are the basics on how varidic functions work:
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
import "fmt"
|
||
|
|
||
|
func printFruits(fruits ...string) {
|
||
|
for _, fruit := range fruits{
|
||
|
fmt.Println(fruit)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
printFruits("apple", "bannana")
|
||
|
printFruits("papaya", "coconut", "pear", "pineapple")
|
||
|
berries := []string{"blueberry", "strawberry", "raspberry"}
|
||
|
printFruits(berries...)
|
||
|
}
|
||
|
```
|
||
|
|
||
|
First, in printFruits we defined the number of arguments with [...string].
|
||
|
|
||
|
This tells Go that this function accepts any number of string arguments.
|
||
|
|
||
|
The first two calls to printFruits shows that the function will print each string, even if we are passing a different number of arguments.
|
||
|
|
||
|
```text
|
||
|
apple
|
||
|
bannana
|
||
|
...
|
||
|
papaya
|
||
|
coconut
|
||
|
pear
|
||
|
...
|
||
|
```
|
||
|
|
||
|
This will also work for slices.
|
||
|
|
||
|
To use a vardiac function with a slice, we add the training dots to the call.
|
||
|
|
||
|
```go
|
||
|
printFruits(berries...)
|
||
|
```
|
||
|
|
||
|
```text
|
||
|
blueberry
|
||
|
strawberry
|
||
|
raspberry
|
||
|
```
|