가변 함수 인수: Go에서 "분해된" 슬라이스와 일반 매개변수 혼합
Go 프로그래밍 언어는 가변 함수 인수를 사용하여 함수를 정의하는 기능을 제공합니다. "..." 구문을 사용하는 매개변수입니다. 이를 통해 함수는 가변 개수의 인수를 허용할 수 있습니다. 그러나 런타임 오류를 피하려면 가변 인수의 메커니즘을 이해하는 것이 중요합니다.
주어진 예에서:
func main() { stuff := []string{"baz", "bla"} foo("bar", stuff...) } func foo(s ...string) { fmt.Println(s) }
의도는 일반 인수("bar")와 인수를 모두 전달하는 것입니다. foo 함수에 대한 "폭발된" 슬라이스(물건...). 그러나 이로 인해 "인수가 너무 많아" 컴파일 오류가 발생합니다.
이 동작의 이유는 가변 매개변수의 정의에 있습니다. Go에는 가변 매개변수에 대한 인수를 지정하는 두 가지 방법이 있습니다:
동일한 가변 매개변수 내에서 이 두 가지 방법을 혼합하는 것은 허용되지 않습니다. stuff...가 전달되면 슬라이스 자체가 가변 매개변수의 값이 됩니다. 따라서 "bar"와 같은 열거된 요소와 공존할 수 없습니다.
의도된 동작이 슬라이스를 "폭발"하는 것이라면 다음 구문이 정확합니다.
foo([]string{"bar"}...)
이렇게 하면 됩니다. 효과적으로 확장:
foo("bar", "baz", "bla")
결론적으로, 가변 함수의 맥락에서 열거된 인수와 슬라이스를 혼합하는 것은 불가능합니다. 가다. 언어 사양에 따르면 가변 매개변수는 해당 매개변수의 값이 되는 단일 슬라이스 인수만 허용할 수 있습니다. 원하는 "폭발" 동작을 달성하려면 앞에 열거된 인수 없이 전체 슬라이스를 자체적으로 전달해야 합니다.
위 내용은 Go에서 정규 슬라이스 인수와 분해 슬라이스 인수를 모두 Variadic 함수에 올바르게 전달할 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!