| 
									
										
										
										
											2018-10-12 16:35:31 -04:00
										 |  |  | --- | 
					
						
							|  |  |  | title: Variadic Functions | 
					
						
							|  |  |  | localeTitle: وظائف متنوعة | 
					
						
							|  |  |  | --- | 
					
						
							|  |  |  | ## وظائف متنوعة
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | الدوال Variadic هي دالات يمكن استدعاؤها مع أي عدد من الوسيطات اللاحقة. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | هذه ميزة مفيدة عندما نعمل على تطبيقات الويب. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | في بعض الأحيان ، لا نحتاج إلى عدد العناصر التي سنحتاج إلى تمريرها إلى محرك HTML الخاص بالتخطيط. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | فيما يلي الأساسيات حول كيفية عمل الدوال varidic: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-20 13:45:47 -07:00
										 |  |  | ```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...) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ```  | 
					
						
							| 
									
										
										
										
											2018-10-12 16:35:31 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | أولاً ، في printFruits قمنا بتعريف عدد الوسيطات باستخدام \[… string\]. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | يخبر هذا Go أن هذه الدالة تقبل أي عدد من وسائط السلسلة. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | تظهر أول مكالمتين للطباعة printFruits أن الدالة ستقوم بطباعة كل سلسلة ، حتى إذا كنا نجتاز عددًا مختلفًا من الوسيطات. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-20 13:45:47 -07:00
										 |  |  | ```text | 
					
						
							|  |  |  | apple | 
					
						
							|  |  |  | bannana | 
					
						
							|  |  |  | ... | 
					
						
							|  |  |  | papaya | 
					
						
							|  |  |  | coconut | 
					
						
							|  |  |  | pear | 
					
						
							|  |  |  | ... | 
					
						
							|  |  |  | ```  | 
					
						
							| 
									
										
										
										
											2018-10-12 16:35:31 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | هذا سوف يعمل أيضا لشرائح. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | لاستخدام وظيفة vardiac مع شريحة ، نضيف نقاط التدريب إلى المكالمة. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-20 13:45:47 -07:00
										 |  |  | ```go | 
					
						
							|  |  |  | printFruits(berries...) | 
					
						
							|  |  |  | ```  | 
					
						
							| 
									
										
										
										
											2018-10-12 16:35:31 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-20 13:45:47 -07:00
										 |  |  | ```text | 
					
						
							|  |  |  | blueberry | 
					
						
							|  |  |  | strawberry | 
					
						
							|  |  |  | raspberry | 
					
						
							|  |  |  | ``` |