> 백엔드 개발 > Golang > Go Variadic 함수에서 `...interface{}`는 무엇을 의미하나요?

Go Variadic 함수에서 `...interface{}`는 무엇을 의미하나요?

Patricia Arquette
풀어 주다: 2024-12-21 02:11:11
원래의
571명이 탐색했습니다.

What Does `...interface{}` Mean in Go Variadic Functions?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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