62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Variadic Functions | |||
|  | localeTitle: 变量函数 | |||
|  | --- | |||
|  | ## 变量函数
 | |||
|  | 
 | |||
|  | 可变参数函数是可以使用任意数量的尾随参数调用的函数。 | |||
|  | 
 | |||
|  | 当我们处理网络应用时,这是一个有用的功能。 | |||
|  | 
 | |||
|  | 有时我们不需要将多少元素传递给HTML模板引擎。 | |||
|  | 
 | |||
|  | 以下是有关varidic函数如何工作的基础知识: | |||
|  | 
 | |||
|  | ```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  | |||
|  | 
 | |||
|  | ``` |