가변 함수를 사용한 여러 반환 값
다음과 같이 여러 정수 값을 반환하는 Go 함수가 있다고 가정합니다.
func temp() (int, int) { return 1, 1 }
직관적으로 temp 결과를 Printf에 직접 전달하고 다음을 사용하여 두 값을 모두 인쇄할 수 있습니다. 문자열 형식:
fmt.Printf("first= %d and second = %d", temp())
그러나 temp는 두 개의 값을 반환하는 반면 Printf는 하나만 예상하기 때문에 이 접근 방식은 작동하지 않습니다.
이 제한의 이유는 Go 함수 호출 사양에 있습니다. 함수에 final ... 매개변수가 있는 경우(Printf와 마찬가지로) 다른 함수의 나머지 반환 값만 할당할 수 있다고 명시되어 있습니다. 이는 다른 함수에 하나 이상의 반환 값이 있어야 함을 의미합니다.
문자열 보간 사용
Printf를 사용하는 대신 문자열 보간을 활용하여 목표를 달성할 수 있습니다.
a, b := temp() fmt.Println("first=", a, "and second =", b)
포장 반품 값
Printf와 같은 가변 함수에 여러 반환 값을 전달하려면 Wrap이라는 유틸리티 함수를 활용할 수 있습니다. 임의의 수의 인터페이스{} 값을 사용하고 인터페이스{} 값의 조각을 반환합니다.
func wrap(vs ...interface{}) []interface{} { return vs }
이 유틸리티를 사용하면 하나 이상의 반환 값이 있는 모든 함수의 반환 값을 결과 슬라이스를 래핑하고 사용하여 Printf를 호출합니다.
fmt.Printf("1: %v, 2: %v\n", wrap(oneInt())...) fmt.Printf("1: %v, 2: %v\n", wrap(twoInts())...) fmt.Printf("1: %v, 2: %v, 3: %v\n", wrap(threeStrings())...)
여기서 oneInt, twoInts 및 threeStrings는 단일 정수, 정수 튜플을 반환하는 함수입니다. 및 문자열 튜플을 각각 사용합니다.
이 접근 방식은 가변 함수에 하나의 반환 값만 전달하는 제한을 우회하여 원하는 대로 함수의 여러 반환 값을 인쇄할 수 있도록 합니다.
위 내용은 Go에서 Variadic 함수에 전달할 때 여러 반환 값을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!