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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-31 09:51:01309검색

How to Pass Multiple Return Values as Arguments to Functions in Go?

다중 인수 함수의 인수로 값 반환

여러 값을 반환하는 함수를 처리할 때 이러한 값을 입력으로 사용할 수 있습니다. 다른 함수에 대한 인수. 그러나 수신 함수에 추가 매개변수가 있는 경우 특정 제한 사항이 적용됩니다.

다음 코드를 고려하세요.

<code class="go">func returnIntAndString() (i int, s string) {...}

func doSomething(msg string, i int, s string) {...}</code>

returnIntAndString()의 반환 값을 doSomething()에 직접 전달하려고 시도하는 경우 :

<code class="go">doSomething("message", returnIntAndString())</code>

Go는 다음과 같은 오류를 표시합니다.

multiple-value returnIntAndString() in single-value context
not enough arguments in call to doSomething()

이는 Go의 반환 값이 함수의 인수로 단일 값만 전달하도록 허용하기 때문입니다. 이전 함수는 여러 값을 생성합니다.

이 문제를 해결하려면 다음 두 가지 옵션이 있습니다.

  1. 반환 값 할당:
    반환 할당 값을 임시 변수에 저장하고 doSomething()에 개별적으로 전달합니다.

    <code class="go">i, s := returnIntAndString()
    doSomething("message", i, s)</code>
  2. 특정 값 반환:
    returnIntAndString() 함수에서 각 값에 대한 필드가 있는 명명된 구조체입니다. 그런 다음 구조체를 doSomething()에 전달합니다.

    <code class="go">type Result struct {
       I int
       S string
    }
    
    func returnIntAndString() Result {...}
    
    res := returnIntAndString()
    doSomething("message", res.I, res.S)</code>

Go의 특정 규칙은 인수를 할당할 때 다중 값 반환 값 함수와 함께 추가 매개 변수를 허용하지 않는다는 점을 기억하세요. 언어 사양에 명시된 특정 조건이 충족되지 않는 경우 제공된 솔루션 중 하나를 사용해야 합니다.

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

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