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

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

Susan Sarandon
풀어 주다: 2024-12-09 08:55:06
원래의
1066명이 탐색했습니다.

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

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

배경:
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의 모든 가변 함수에 여러 반환 값을 전달하는 데 사용할 수 있습니다.
  • fmt.Println 함수는 여러 반환 값을 인쇄하는 데도 사용할 수 있습니다. 값을 직접적으로 지정할 수 있지만 문자열 형식은 지원하지 않습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿