가변 함수 인수의 비호환성
Go에서 가변 함수 인수는 가변 개수의 인수를 허용하는 매개변수를 지정하는 편리한 방법을 제공합니다. 그러나 "분해된" 슬라이스를 가변 함수의 일반 매개변수와 혼합할 때 특정 제한 사항이 있습니다.
기본적인 제한은 가변 인수가 명시적으로 열거되거나 슬라이스로 전달되어야 하지만 둘 다 수행할 수는 없다는 것입니다. 슬라이스가 사용되면(...stuff) 새 슬라이스를 생성하지 않고 가변 매개변수의 값으로 직접 전달됩니다. 반면에 요소(예: "bar", stuff...)를 열거하면 제공된 인수를 사용하여 새 조각이 생성됩니다.
컴파일러에서는 할당이 필요하므로 이 두 형식을 혼합하는 것을 금지합니다. Go 언어 사양에서 지원되지 않는 새로운 슬라이스입니다. "foo 호출 시 인수가 너무 많습니다"라는 오류는 함수 시그니처에 열거된 요소와 슬라이스 모두에서 충족될 수 없는 단일 가변 매개변수가 필요함을 나타냅니다.
이 제한으로 인해 가변 매개변수는 직접 슬라이스하거나 열거된 요소를 사용하여 새로 생성된 슬라이스입니다. 이는 가변 인수 처리 시 발생할 수 있는 혼란과 불일치를 방지합니다.
Ruby와 같은 언어에서 *foo 구문을 사용하면 기존 배열을 가변 매개 변수로 확장할 수 있습니다. 그러나 Go에서는 가변 인수의 열거 요소와 슬라이스 사이의 엄격한 분리로 인해 이것이 불가능합니다.
위 내용은 Go Variadic 함수는 열거된 인수와 슬라이스를 혼합할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!