>  기사  >  백엔드 개발  >  Go에서 여러 반환 값을 인수로 다른 함수에 전달하는 방법은 무엇입니까?

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

Linda Hamilton
Linda Hamilton원래의
2024-10-31 08:49:02465검색

How to Pass Multiple Return Values as Arguments to Another Function in Go?

한 함수의 반환 값을 다른 함수의 입력 인수로 사용하는 방법

문제:

returnIntAndString과 doSomething이라는 두 가지 함수를 고려해보세요. returnIntAndString은 정수와 문자열이라는 두 개의 값을 반환하고, doSomething은 문자열, 정수, 또 다른 문자열의 세 가지 인수를 사용합니다.

returnIntAndString의 반환 값을 인수로 사용하여 doSomething을 호출하면 다음 오류가 발생합니다.

main.go:45: multiple-value returnIntAndString() in single-value context
main.go:45: not enough arguments in call to doSomething()

답변:

Go 사양에 따르면 함수 호출은 다음과 같은 경우에만 다른 함수의 반환 값을 호출된 함수의 매개 변수에 바인딩할 수 있습니다.

  • 첫 번째 함수의 반환 값 개수는 두 번째 함수의 매개 변수 개수와 같습니다.
  • 반환 값의 유형은 매개 변수의 유형에 할당할 수 있습니다.

이 경우 returnIntAndString은 두 개의 값을 반환하지만 doSomething에는 세 번째 인수가 필요합니다. 따라서 이 직접 호출은 허용되지 않습니다.

대안:

두 가지 대체 솔루션이 있습니다.

  1. Wrap the Return 구조체의 값:

returnIntAndString의 반환 값을 보유하는 구조체를 만들고 해당 구조체의 인스턴스를 doSomething에 전달합니다.

<code class="go">type ReturnValues struct {
    I int
    S string
}

func returnIntAndString() ReturnValues {
    return ReturnValues{42, "Hello"}
}

func doSomething(msg string, values ReturnValues) {
    // Use values.I and values.S as needed
}

doSomething("Message", returnIntAndString())</code>
  1. 개별 변수에 반환 값 할당:

returnIntAndString의 반환 값을 명명된 변수에 할당하고 해당 변수를 doSomething에 전달합니다.

<code class="go">var i, s = returnIntAndString()
doSomething("Message", i, s)</code>

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

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