배경:
Go 함수는 여러 값을 반환할 수 있지만 표준 가변 함수 호출에서는 해당 값을 직접 전달할 수 없습니다. 이 기사에서는 사용자 정의 래퍼 함수를 사용하여 이를 달성하는 방법을 살펴봅니다.
문제:
두 개의 정수 값을 반환하는 함수를 고려해보세요.
func temp() (int, int) { return 1, 1 }
우리는 이 반환 값을 가변 Printf 함수에 전달하여 문자열을 사용하여 인쇄하려고 합니다. 형식 지정:
fmt.Printf("first= %d and second = %d", temp()) // Error
해결책:
1. 직접 접근(지원되지 않음):
표준 함수 호출 구문은 가변 함수에 여러 반환 값을 전달하는 것을 지원하지 않습니다. 이는 가변 매개변수가 함수 시그니처의 마지막 매개변수여야 하기 때문입니다.
2. 반환 값 래핑:
모든 함수의 반환 값을 []인터페이스{} 슬라이스로 변환하는 래퍼 함수를 생성할 수 있습니다. 그런 다음 variadic Printf 함수는 이 슬라이스를 인수로 받아들일 수 있습니다.
func wrap(vs ...interface{}) []interface{} { return vs }
사용법:
랩 함수를 사용하여 이제 temp 함수의 반환 값을 다음으로 전달할 수 있습니다. Printf:
fmt.Printf("first= %d and second = %d", wrap(temp()...)...)
추가 참고:
위 내용은 여러 Go 함수 반환 값을 Variadic 함수에 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!