래퍼 함수에서 Variadic 매개변수 풀기
Go의 Variadic 함수는 임의 개수의 인수를 받아들이는 데 중요한 역할을 합니다. 이 기능을 효과적으로 활용하려면 이러한 매개변수가 어떻게 처리되는지 이해하는 것이 중요합니다.
fmt.Fprintf 래퍼 함수의 예를 고려하세요.
Die(" foo"), 다소 예상치 못한 출력이 나타납니다: foo%!(EXTRA []interface {}=[]). 이 난해한 접미사는 가변 매개변수가 전달되는 방식에 기인할 수 있습니다.
설계상 가변 함수는 해당 유형의 조각으로 인수를 받습니다. 이 경우 Die 함수는 args라는 []인터페이스{} 슬라이스를 허용합니다. 그러나 이후에 이 인수를 fmt.Sprintf에 전달하면 의도한 개별 값이 아닌 []interface{} 유형의 단일 엔터티로 처리됩니다.
이를 수정하려면 ... 구문을 다음과 같이 지정해야 합니다. 아래와 같이 사용됩니다.
이 접근 방식을 사용하면 args 내의 각 값이 별도의 인수로 fmt.Sprintf에 전달되어 다음을 모방합니다. Die 함수에서 이를 수신할 때의 동작. 이 중요한 차이점은 Go 언어 사양과 일치하며 예상되는 출력을 보장합니다.
위 내용은 래퍼 함수에서 가변 매개변수를 사용할 때 `fmt.Sprintf`가 예상치 못한 출력을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!