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
 | |
| ```
 |