62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| title: Variadic Functions
 | ||
| localeTitle: Вариадические функции
 | ||
| ---
 | ||
| ## Вариадические функции
 | ||
| 
 | ||
| Вариадические функции - это функции, которые можно вызывать с любым числом возвращающих аргументов.
 | ||
| 
 | ||
| Это полезная функция, когда мы работаем над веб-приложениями.
 | ||
| 
 | ||
| Иногда нам не так много элементов, которые нам нужно будет передать движку HTML-шаблонов.
 | ||
| 
 | ||
| Вот основные сведения о том, как работают варидические функции:
 | ||
| 
 | ||
| ```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...) 
 | ||
|  } 
 | ||
| ```
 | ||
| 
 | ||
| Во-первых, в printFruits мы определили количество аргументов с \[... string\].
 | ||
| 
 | ||
| Это говорит Go, что эта функция принимает любое количество строковых аргументов.
 | ||
| 
 | ||
| Первые два вызова printFruits показывают, что функция будет печатать каждую строку, даже если мы передаем другое количество аргументов.
 | ||
| 
 | ||
| ```text
 | ||
| apple 
 | ||
|  bannana 
 | ||
|  ... 
 | ||
|  papaya 
 | ||
|  coconut 
 | ||
|  pear 
 | ||
|  ... 
 | ||
| ```
 | ||
| 
 | ||
| Это также будет работать для срезов.
 | ||
| 
 | ||
| Чтобы использовать функцию vardiac со срезом, мы добавляем точки тренировки к вызову.
 | ||
| 
 | ||
| ```go
 | ||
| printFruits(berries...) 
 | ||
| ```
 | ||
| 
 | ||
| ```text
 | ||
| blueberry 
 | ||
|  strawberry 
 | ||
|  raspberry 
 | ||
| 
 | ||
| ``` |