Go에서 ...인터페이스{}의 의미 이해
Go에서는 세 개의 점(... )은 가변 매개변수로 알려져 있습니다. 즉, 함수는 해당 특정 매개변수에 대해 임의 개수의 인수를 허용할 수 있습니다.
다음 함수를 고려하세요.
func DPrintf(format string, a ...interface{}) (n int, err error) { if Debug > 0 { n, err = fmt.Printf(format, a...) } return }
매개변수 a는 ...interface{} 유형입니다. 모든 유형의 0개 이상의 인수를 허용할 수 있습니다. 그런 다음 이러한 인수는 매개변수에 대해 선언된 유형의 조각으로 함수에 의해 수신됩니다. 이 경우에는 []interface{}입니다.
Go 사양에서는 다음 설명을 제공합니다.
"함수 시그니처의 마지막 매개변수에는 ...라는 접두어가 붙은 유형이 있을 수 있습니다. 이러한 매개변수가 있는 함수를 variadic이라고 하며 해당 매개변수가 0개 이상인 경우 호출될 수 있습니다. 매개변수."
따라서 ...interface{} 유형의 매개변수는 함수 내에서 []interface{} 유형의 매개변수와 동일합니다. 차이점은 인수가 함수에 전달되는 방식에 있습니다. 개별적으로 또는 단일 슬라이스로 전달될 수 있으며, 이 경우 슬라이스 값에는 세 개의 점(...)이 접미사로 붙어야 합니다.
예를 들어, fmt.Println 함수에 대한 다음 두 호출은 동일한 결과가 생성됩니다.
fmt.Println("First", "Second", "Third")
s := []interface{}{"First", "Second", "Third"} fmt.Println(s...)
두 경우 모두 슬라이스 s는 세 개의 점과 함께 Println 함수에 전달되어 처리되어야 함을 나타냅니다. 가변 인수로 사용됩니다.
이 메커니즘은 함수가 가변 개수의 인수를 허용하여 유연성을 제공하여 더욱 다양하고 재사용 가능하게 만듭니다.
위 내용은 Go Variadic 함수에서 `...interface{}`는 무엇을 의미하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!