무한 매개변수는 함수가 전달하는 매개변수의 개수가 무한하다는 뜻입니다.
1. 함수 정의
먼저 가변 매개변수가 있는 함수를 정의하는 방법을 살펴보겠습니다.
func YourFun(v... interface{}){ }
이 함수 정의는 모든 유형의 매개변수를 원하는 만큼 허용하는 함수를 정의합니다. 여기서 특수 구문은 점 3개 "...
"입니다. 변수 뒤에 점 3개를 추가하면 해당 지점에서 무한 매개변수가 허용된다는 뜻입니다. Python과 달리 "interface{}"를 여기에서 특정 유형으로 지정하면 해당 유형의 변수 매개변수만 허용할 수 있습니다. ...
”,在一个变量后面加上三个点后,表示从该处开始接受不定参数,不同于python,golang的不定参数如果将这里"interface{}
" 替换成某一确定类型,那么其就只能接受该类型的不定参数。
二、“...”
上面我们看到有三个点"..."的特殊标记。那么这三个点"..."有啥作用呢?
2.1 不定参数
如上所述,在定义不定参数时,表示从该参数开始记录不定参数
2.2 解引用slice
当要传递若干个值到不定参数函数中得时候,可以手动书写每个参数,也可以将一个slice传递给该函数:
YourFunc (YourSlice...)
通过"...
"可以将slice中得参数对应的传递给函数。相当于python中得“*args”。
这里要注意的是,解引用slice目前只能在不定参数函数传递参数时使用,在其他地方使用会报错。
三、遍历参数
下面我们来看一个实例:
func P (v... string) { for _,item := range v { fmt.Println("item:",item) } } func main() { var l []string l = append(l,"a") l = append(l,"b") fmt.Println("l is ",l) P(l...) }
这里我们看到的结果是,首先一个完整的list,然后是每个元素:
l is [a b] item: a item: b
通过配合使用for...range
...
"를 통해 함수에 전달할 수 있습니다. Python의 "*args"와 동일합니다. 🎜🎜여기서 역참조 슬라이스는 현재 가변 매개변수 함수에서 매개변수를 전달할 때만 사용할 수 있다는 점에 유의해야 합니다. 다른 곳에서 사용하면 오류가 보고됩니다. 🎜🎜🎜 3. 순회 매개변수 🎜🎜🎜 아래 예를 살펴보겠습니다. 🎜rrreee🎜 여기서 볼 수 있는 결과는 먼저 전체 목록과 각 요소입니다. 🎜rrreee🎜 ...범위에 를 사용하여 는 가변 매개변수 v의 각 매개변수를 순회할 수 있습니다. 여기서는 가변 매개변수 유형을 문자열로 설정하여 다수의 문자열 유형 매개변수만 허용합니다. 🎜🎜추천 관련 기사 및 튜토리얼: 🎜golang 튜토리얼🎜🎜위 내용은 golang의 부정 매개변수에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!