> 백엔드 개발 > Golang > golang의 부정 매개변수에 대한 자세한 설명

golang의 부정 매개변수에 대한 자세한 설명

王林
풀어 주다: 2019-12-07 09:21:06
원래의
3451명이 탐색했습니다.

golang의 부정 매개변수에 대한 자세한 설명

무한 매개변수는 함수가 전달하는 매개변수의 개수가 무한하다는 뜻입니다.

1. 함수 정의

먼저 가변 매개변수가 있는 함수를 정의하는 방법을 살펴보겠습니다.

func YourFun(v... interface{}){
}
로그인 후 복사

이 함수 정의는 모든 유형의 매개변수를 원하는 만큼 허용하는 함수를 정의합니다. 여기서 특수 구문은 점 3개 "..."입니다. 변수 뒤에 점 3개를 추가하면 해당 지점에서 무한 매개변수가 허용된다는 뜻입니다. Python과 달리 "< code>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

2. "..."

위에는 세 개의 점 "..."이 있는 특수 표시가 있습니다. 그러면 이 세 개의 점 "..."은 무엇을 할까요? 🎜🎜2.1 부정 매개변수🎜🎜위에서 언급한 것처럼 부정 매개변수를 정의한다는 것은 이 매개변수에서 부정 매개변수를 기록하기 시작한다는 의미입니다.🎜🎜2.2 역참조 슬라이스🎜🎜여러 값을 부정 매개변수에 전달하려는 경우 함수를 수동으로 작성할 수도 있습니다. 각 매개변수에 대해 슬라이스를 함수에 전달할 수도 있습니다. 🎜rrreee🎜슬라이스의 매개변수는 "..."를 통해 함수에 전달할 수 있습니다. Python의 "*args"와 동일합니다. 🎜🎜여기서 역참조 슬라이스는 현재 가변 매개변수 함수에서 매개변수를 전달할 때만 사용할 수 있다는 점에 유의해야 합니다. 다른 곳에서 사용하면 오류가 보고됩니다. 🎜🎜🎜 3. 순회 매개변수 🎜🎜🎜 아래 예를 살펴보겠습니다. 🎜rrreee🎜 여기서 볼 수 있는 결과는 먼저 전체 목록과 각 요소입니다. 🎜rrreee🎜 ...범위에 를 사용하여 는 가변 매개변수 v의 각 매개변수를 순회할 수 있습니다. 여기서는 가변 매개변수 유형을 문자열로 설정하여 다수의 문자열 유형 매개변수만 허용합니다. 🎜🎜추천 관련 기사 및 튜토리얼: 🎜golang 튜토리얼🎜🎜

위 내용은 golang의 부정 매개변수에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿