>백엔드 개발 >Golang >Go에서 가변 함수에 여러 반환 값을 전달하는 방법은 무엇입니까?

Go에서 가변 함수에 여러 반환 값을 전달하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-27 19:53:10720검색

How to Pass Multiple Return Values to a Variadic Function in Go?

가변 함수에 여러 반환 값 전달

문제:

해 보세요. 두 개의 정수를 반환하고 fmt.Println() 내에서 문자열 형식을 사용하여 두 값을 모두 인쇄하려는 함수 부르다. 그러나 이 접근 방식은 Go에서 기본적으로 지원되지 않습니다.

해결책:

여러 반환 값을 fmt.Println()에 직접 전달할 수는 없지만 fmt.Printf()로 동일한 결과를 얻기 위해 트릭을 사용할 수 있습니다.

  1. 유틸리티 함수를 생성합니다. 다양한 수의 입력을 받아 []인터페이스{}의 일부를 반환하는 Wrap().
  2. 함수의 반환 값으로 Wrap()을 호출하여 개별 매개변수로 전달합니다.
  3. 결과 슬라이스를 가변 매개변수의 값으로 fmt.Printf()에 전달합니다. ....

다음은 예:

func wrap(vs ...interface{}) []interface{} {
    return vs
}

func twoInts() (int, int) {
    return 1, 2
}

func main() {
    fmt.Printf("first= %d and second = %d", wrap(twoInts()...)...)
}

이 접근 방식을 사용하면 가변 함수에 여러 반환 값을 전달하여 fmt.Printf() 내에서 문자열 형식을 사용하여 인쇄할 수 있습니다.

참고 :

  • fmt.Println()은 적어도 하나의 값을 반환하는 함수와 함께 계속 사용할 수 있습니다. 초과된 반환 값을 가변 매개 변수에 자동으로 할당하기 때문입니다.
  • wrap() 유틸리티 함수는 반환 값의 개수에 관계없이 함수를 처리하도록 일반화될 수 있습니다.
  • 추가 정보는 다음을 참조하세요. 단일 값 컨텍스트의 여러 값에 대한 관련 질문 및 Go 함수에서 맵과 같은 'ok' 값 반환.

위 내용은 Go에서 가변 함수에 여러 반환 값을 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.